mirror of
https://github.com/php/php-src.git
synced 2026-03-24 00:02:20 +01:00
Fix GH-16523: FILTER_FLAG_HOSTNAME accepts ending hyphen
Domain name labels must not end with a hyphen, and that is also true for the last label. Apparently, this has been overlooked so far. Closes GH-16540.
This commit is contained in:
3
NEWS
3
NEWS
@@ -42,6 +42,9 @@ PHP NEWS
|
||||
. Fixed bug GH-16397 (Segmentation fault when comparing FFI object).
|
||||
(nielsdos)
|
||||
|
||||
- Filter:
|
||||
. Fixed bug GH-16523 (FILTER_FLAG_HOSTNAME accepts ending hyphen). (cmb)
|
||||
|
||||
- GD:
|
||||
. Fixed bug GH-16334 (imageaffine overflow on matrix elements).
|
||||
(David Carlier)
|
||||
|
||||
@@ -542,7 +542,7 @@ static int _php_filter_validate_domain(char * domain, size_t len, zend_long flag
|
||||
/* Reset label length counter */
|
||||
i = 1;
|
||||
} else {
|
||||
if (i > 63 || (hostname && *s != '-' && !isalnum((int)*(unsigned char *)s))) {
|
||||
if (i > 63 || (hostname && (*s != '-' || *(s + 1) == '\0') && !isalnum((int)*(unsigned char *)s))) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
20
ext/filter/tests/gh16523.phpt
Normal file
20
ext/filter/tests/gh16523.phpt
Normal file
@@ -0,0 +1,20 @@
|
||||
--TEST--
|
||||
GH-16523 (FILTER_FLAG_HOSTNAME accepts ending hyphen)
|
||||
--EXTENSIONS--
|
||||
filter
|
||||
--FILE--
|
||||
<?php
|
||||
$domains = [
|
||||
'a-.bc.com',
|
||||
'a.bc-.com',
|
||||
'a.bc.com-',
|
||||
];
|
||||
|
||||
foreach ($domains as $domain) {
|
||||
var_dump(filter_var($domain, FILTER_VALIDATE_DOMAIN, FILTER_FLAG_HOSTNAME));
|
||||
}
|
||||
?>
|
||||
--EXPECT--
|
||||
bool(false)
|
||||
bool(false)
|
||||
bool(false)
|
||||
Reference in New Issue
Block a user