From: Ilia Alshanetsky Date: Tue, 16 Aug 2005 14:20:41 +0000 (+0000) Subject: MFH: Fixed bug #34148 (+,- and . not supported as parts of scheme). X-Git-Tag: php-5.1.0RC2_PRE~108 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=5610ad29e37324cd0a4bdf7663564945e6b66f18;p=php MFH: Fixed bug #34148 (+,- and . not supported as parts of scheme). --- diff --git a/ext/standard/tests/strings/url_t.phpt b/ext/standard/tests/strings/url_t.phpt index 1e4dd3566d..f6fec50de9 100644 --- a/ext/standard/tests/strings/url_t.phpt +++ b/ext/standard/tests/strings/url_t.phpt @@ -68,7 +68,8 @@ $sample_urls = array ( 'file:/path/to/file', 'http://1.2.3.4:/abc.asp?a=1&b=2', 'http://foo.com#bar', -'scheme:' +'scheme:', +'foo+bar://baz@bang/bla', ); foreach ($sample_urls as $url) { @@ -662,3 +663,13 @@ array(1) { ["scheme"]=> string(6) "scheme" } +array(4) { + ["scheme"]=> + string(7) "foo+bar" + ["host"]=> + string(4) "bang" + ["user"]=> + string(3) "baz" + ["path"]=> + string(4) "/bla" +} diff --git a/ext/standard/url.c b/ext/standard/url.c index 68280177f7..6e499afe95 100644 --- a/ext/standard/url.c +++ b/ext/standard/url.c @@ -107,7 +107,8 @@ PHPAPI php_url *php_url_parse_ex(char const *str, int length) /* validate scheme */ p = s; while (p < e) { - if (!isalnum(*p)) { + /* scheme = 1*[ lowalpha | digit | "+" | "-" | "." ] */ + if (!isalpha(*p) && !isdigit(*p) && *p != '+' && *p != '.' && *p != '-') { if (e + 1 < ue) { goto parse_port; } else {