pierrick                                 Thu, 17 Mar 2011 18:02:58 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=309352

Log:
Fixed bug #54180 (parse_url() incorrectly parses path when ? in fragment)

Bug: http://bugs.php.net/54180 (Closed) parse_url() incorrectly parses path 
when ? in fragment
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/NEWS
    A   php/php-src/branches/PHP_5_3/ext/standard/tests/url/bug54180.phpt
    U   php/php-src/branches/PHP_5_3/ext/standard/url.c

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2011-03-17 16:20:19 UTC (rev 309351)
+++ php/php-src/branches/PHP_5_3/NEWS   2011-03-17 18:02:58 UTC (rev 309352)
@@ -5,7 +5,11 @@
 - Zend Engine:
   . Fixed bug #54262 (Crash when assigning value to a dimension in a 
non-array).
     (Dmitry)
-
+
+- Core:
+  . Fixed bug #54180 (parse_url() incorrectly parses path when ? in fragment).
+    (tomas dot brastavicius at quantum dot lt, Pierrick)
+
 - DBA extension:
   . Fixed bug #54242 (dba_insert returns true if key already exists). (Felipe)


Added: php/php-src/branches/PHP_5_3/ext/standard/tests/url/bug54180.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/tests/url/bug54180.phpt           
                (rev 0)
+++ php/php-src/branches/PHP_5_3/ext/standard/tests/url/bug54180.phpt   
2011-03-17 18:02:58 UTC (rev 309352)
@@ -0,0 +1,32 @@
+--TEST--
+Bug #54180 (parse_url() incorrectly parses path when ? in fragment)
+--FILE--
+<?php
+
+var_dump(parse_url("http://example.com/path/script.html?t=1#fragment?data";));
+var_dump(parse_url("http://example.com/path/script.html#fragment?data";));
+
+?>
+--EXPECTF--
+array(5) {
+  ["scheme"]=>
+  string(4) "http"
+  ["host"]=>
+  string(11) "example.com"
+  ["path"]=>
+  string(17) "/path/script.html"
+  ["query"]=>
+  string(3) "t=1"
+  ["fragment"]=>
+  string(13) "fragment?data"
+}
+array(4) {
+  ["scheme"]=>
+  string(4) "http"
+  ["host"]=>
+  string(11) "example.com"
+  ["path"]=>
+  string(17) "/path/script.html"
+  ["fragment"]=>
+  string(13) "fragment?data"
+}

Modified: php/php-src/branches/PHP_5_3/ext/standard/url.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/url.c     2011-03-17 16:20:19 UTC 
(rev 309351)
+++ php/php-src/branches/PHP_5_3/ext/standard/url.c     2011-03-17 18:02:58 UTC 
(rev 309352)
@@ -316,6 +316,10 @@
                pp = strchr(s, '#');

                if (pp && pp < p) {
+                       if (pp - s) {
+                               ret->path = estrndup(s, (pp-s));
+                               php_replace_controlchars_ex(ret->path, (pp - 
s));
+                       }
                        p = pp;
                        goto label_parse;
                }

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to