Browse Source

Fix broken build on *BSD with MSAN

The #if to declare instrumented versions of strlcpy and strlcat was too
inclusive on *BSD systems where Clang already provides instrumented strong
symbols, resulting in "duplicate symbol" at link-time.

Fix GH-20002
Closes GH-20032
pull/20077/head
Guillaume Outters 3 months ago
committed by Ilija Tovilo
parent
commit
26ca363a13
No known key found for this signature in database GPG Key ID: 115CEA7A713E12E9
  1. 1
      NEWS
  2. 6
      Zend/zend_string.c

1
NEWS

@ -14,6 +14,7 @@ PHP NEWS
array). (ilutov)
. Fixed bug GH-19480 (error_log php.ini cannot be unset when open_basedir is
configured). (nielsdos)
. Fixed bug GH-20002 (Broken build on *BSD with MSAN). (outtersg)
- Curl:
. Fix cloning of CURLOPT_POSTFIELDS when using the clone operator instead

6
Zend/zend_string.c

@ -505,8 +505,10 @@ ZEND_API zend_string *zend_string_concat3(
return res;
}
/* strlcpy and strlcat are not intercepted by msan, so we need to do it ourselves. */
#if __has_feature(memory_sanitizer)
/* strlcpy and strlcat are not always intercepted by msan, so we need to do it
* ourselves. Apply a simple heuristic to determine the platforms that need it.
* See https://github.com/php/php-src/issues/20002. */
#if __has_feature(memory_sanitizer) && !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__APPLE__)
static size_t (*libc_strlcpy)(char *__restrict, const char *__restrict, size_t);
size_t strlcpy(char *__restrict dest, const char *__restrict src, size_t n)
{

Loading…
Cancel
Save