From: Stanislav Malyshev Date: Sun, 3 Jan 2021 02:55:29 +0000 (-0800) Subject: Fix bug #79405 - gethostbyname() silently truncates after a null byte X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8768621149fbedc0e5aaf847b71108fd459a548a;p=php Fix bug #79405 - gethostbyname() silently truncates after a null byte --- diff --git a/ext/standard/dns.c b/ext/standard/dns.c index 42bc93c41a..41b98424ed 100644 --- a/ext/standard/dns.c +++ b/ext/standard/dns.c @@ -147,7 +147,7 @@ PHP_FUNCTION(gethostbyaddr) zend_string *hostname; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STRING(addr, addr_len) + Z_PARAM_PATH(addr, addr_len) ZEND_PARSE_PARAMETERS_END(); hostname = php_gethostbyaddr(addr); @@ -207,7 +207,7 @@ PHP_FUNCTION(gethostbyname) size_t hostname_len; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STRING(hostname, hostname_len) + Z_PARAM_PATH(hostname, hostname_len) ZEND_PARSE_PARAMETERS_END(); if (hostname_len > MAXFQDNLEN) { @@ -230,7 +230,7 @@ PHP_FUNCTION(gethostbynamel) int i; ZEND_PARSE_PARAMETERS_START(1, 1) - Z_PARAM_STRING(hostname, hostname_len) + Z_PARAM_PATH(hostname, hostname_len) ZEND_PARSE_PARAMETERS_END(); if (hostname_len > MAXFQDNLEN) { diff --git a/ext/standard/tests/network/bug79405.phpt b/ext/standard/tests/network/bug79405.phpt new file mode 100644 index 0000000000..37da851250 --- /dev/null +++ b/ext/standard/tests/network/bug79405.phpt @@ -0,0 +1,19 @@ +--TEST-- +Bug #76755 (setcookie does not accept "double" type for expire time) +--FILE-- +getMessage()."\n"; +} +try { +var_dump(gethostbynamel($host)); +} catch(Error $e) { + print $e->getMessage()."\n"; +} +?> +--EXPECT-- +gethostbyname(): Argument #1 ($hostname) must not contain any null bytes +gethostbynamel(): Argument #1 ($hostname) must not contain any null bytes \ No newline at end of file