1
0
mirror of https://github.com/php/php-src.git synced 2026-03-24 00:02:20 +01:00

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
This commit is contained in:
Guillaume Outters
2025-10-01 16:18:20 +02:00
committed by Ilija Tovilo
parent 0ffa337a54
commit 26ca363a13
2 changed files with 5 additions and 2 deletions

1
NEWS
View File

@@ -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

View File

@@ -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)
{