diff --git a/ext/lexbor/config.m4 b/ext/lexbor/config.m4 index 43123578a727..a5261d630f88 100644 --- a/ext/lexbor/config.m4 +++ b/ext/lexbor/config.m4 @@ -1,4 +1,16 @@ PHP_LEXBOR_CFLAGS="-Wno-unknown-warning-option -Wno-unterminated-string-initialization -I@ext_srcdir@/" + +if test "$PHP_ADDRESS_SANITIZER" = "yes"; then + PHP_LEXBOR_CFLAGS="$PHP_LEXBOR_CFLAGS -DLEXBOR_HAVE_ADDRESS_SANITIZER=1" +else + case "$CFLAGS" in + *-fsanitize=address*|\ + *-fsanitize=*,address*) + PHP_LEXBOR_CFLAGS="$PHP_LEXBOR_CFLAGS -DLEXBOR_HAVE_ADDRESS_SANITIZER=1" + ;; + esac +fi + LEXBOR_DIR="lexbor" AC_DEFINE([HAVE_LEXBOR], [1], [Define to 1 if the PHP extension 'lexbor' is available.]) diff --git a/ext/lexbor/config.w32 b/ext/lexbor/config.w32 index 403c3b98afb5..2b81bc60397f 100644 --- a/ext/lexbor/config.w32 +++ b/ext/lexbor/config.w32 @@ -25,6 +25,10 @@ ADD_SOURCES("ext/lexbor/lexbor/unicode", "idna.c unicode.c","lexbor"); ADD_SOURCES("ext/lexbor/lexbor/url", "url.c","lexbor"); ADD_FLAG("CFLAGS_LEXBOR", "/D LEXBOR_BUILDING /utf-8"); +if (PHP_SANITIZER == "yes") { + ADD_FLAG("CFLAGS_LEXBOR", "/D LEXBOR_HAVE_ADDRESS_SANITIZER=1"); +} + AC_DEFINE("HAVE_LEXBOR", 1, "Define to 1 if the PHP extension 'lexbor' is available."); PHP_INSTALL_HEADERS("ext/lexbor", "php_lexbor.h lexbor/"); diff --git a/ext/lexbor/lexbor/url/url.c b/ext/lexbor/lexbor/url/url.c index 8099c12089bb..abd376986f4a 100644 --- a/ext/lexbor/lexbor/url/url.c +++ b/ext/lexbor/lexbor/url/url.c @@ -3443,9 +3443,6 @@ lxb_url_host_parse(lxb_url_parser_t *parser, const lxb_char_t *data, if (lxb_url_is_ipv4(parser, domain->data, end)) { status = lxb_url_ipv4_parse(parser, domain->data, end, &ipv4); - - (void) lexbor_str_destroy(domain, mraw, false); - if (status != LXB_STATUS_OK) { return status; }