summaryrefslogtreecommitdiff
path: root/ext/filter
diff options
context:
space:
mode:
authorAdam Harvey <aharvey@php.net>2010-03-03 09:25:50 +0000
committerAdam Harvey <aharvey@php.net>2010-03-03 09:25:50 +0000
commit0efe78a57707dd74ab9ee4e950a1de06591b461d (patch)
tree788ea50c2835334f3748b288e1ad2c204e34c0c6 /ext/filter
parentf0587e80860b21c16b9e02620d506fbeddcf4064 (diff)
downloadphp-git-0efe78a57707dd74ab9ee4e950a1de06591b461d.tar.gz
Fix for bug #51192 (FILTER_VALIDATE_URL will invalidate a hostname that includes '-'). Original patch by solar@azrael.ws.
Diffstat (limited to 'ext/filter')
-rw-r--r--ext/filter/logical_filters.c2
-rw-r--r--ext/filter/tests/bug51192.phpt13
2 files changed, 14 insertions, 1 deletions
diff --git a/ext/filter/logical_filters.c b/ext/filter/logical_filters.c
index 0b27a641f2..52dcb504ec 100644
--- a/ext/filter/logical_filters.c
+++ b/ext/filter/logical_filters.c
@@ -467,7 +467,7 @@ void php_filter_validate_url(PHP_INPUT_FILTER_PARAM_DECL) /* {{{ */
s = url->host;
while (s < e) {
- if (!isalnum((int)*(unsigned char *)s) && *s != '_' && *s != '.') {
+ if (!isalnum((int)*(unsigned char *)s) && *s != '-' && *s != '.') {
goto bad_url;
}
s++;
diff --git a/ext/filter/tests/bug51192.phpt b/ext/filter/tests/bug51192.phpt
new file mode 100644
index 0000000000..96c67eae1d
--- /dev/null
+++ b/ext/filter/tests/bug51192.phpt
@@ -0,0 +1,13 @@
+--TEST--
+bug 51192, FILTER_VALIDATE_URL will invalidate a hostname that includes '-'
+--SKIPIF--
+<?php if (!extension_loaded("filter")) die("skip"); ?>
+--FILE--
+<?php
+var_dump(filter_var('http://example.com/path', FILTER_VALIDATE_URL));
+var_dump(filter_var('http://exa-mple.com/path', FILTER_VALIDATE_URL));
+var_dump(filter_var('http://exa_mple.com/path', FILTER_VALIDATE_URL));
+--EXPECT--
+string(23) "http://example.com/path"
+string(24) "http://exa-mple.com/path"
+bool(false)