iliaa                                    Fri, 04 Feb 2011 21:41:15 +0000

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

Log:
Fixed bug #53924 (FILTER_VALIDATE_URL doesn't validate port number).

Bug: http://bugs.php.net/53924 (Open) FILTER_VALIDATE_URL doesn't validate port 
numbers
      
Changed paths:
    U   php/php-src/branches/PHP_5_3/NEWS
    U   php/php-src/branches/PHP_5_3/ext/filter/tests/015.phpt
    U   php/php-src/branches/PHP_5_3/ext/standard/url.c
    U   php/php-src/trunk/ext/filter/tests/015.phpt
    U   php/php-src/trunk/ext/standard/url.c

Modified: php/php-src/branches/PHP_5_3/NEWS
===================================================================
--- php/php-src/branches/PHP_5_3/NEWS   2011-02-04 19:22:43 UTC (rev 308034)
+++ php/php-src/branches/PHP_5_3/NEWS   2011-02-04 21:41:15 UTC (rev 308035)
@@ -47,6 +47,8 @@
     null default value). (Gustavo, Stas)

 - Filter extension:
+  . Fixed bug #53924 (FILTER_VALIDATE_URL doesn't validate port number).
+    (Ilia)
   . Fixed bug #53150 (FILTER_FLAG_NO_RES_RANGE is missing some IP ranges).
     (Ilia)
   . Fixed bug #52209 (INPUT_ENV returns NULL for set variables (CLI)). (Ilia)
@@ -109,6 +111,8 @@
 - Phar extension:
   . Fixed bug #53541 (format string bug in ext/phar).
     (crrodriguez at opensuse dot org, Ilia)
+  . Fixed bug #53898 (PHAR reports invalid error message, when the directory
+    does not exist). (Ilia)

 - PHP-FPM SAPI:
   . Enforce security in the fastcgi protocol parsing.

Modified: php/php-src/branches/PHP_5_3/ext/filter/tests/015.phpt
===================================================================
--- php/php-src/branches/PHP_5_3/ext/filter/tests/015.phpt      2011-02-04 
19:22:43 UTC (rev 308034)
+++ php/php-src/branches/PHP_5_3/ext/filter/tests/015.phpt      2011-02-04 
21:41:15 UTC (rev 308035)
@@ -28,6 +28,7 @@
 'news:news.php.net',
 'file://foo/bar',
 "http://\r\n/bar";,
+"http://example.com:qq";
 );
 foreach ($values as $value) {
        var_dump(filter_var($value, FILTER_VALIDATE_URL));
@@ -70,6 +71,7 @@
 string(14) "file://foo/bar"
 bool(false)
 bool(false)
+bool(false)
 string(10) "http://qwe";
 bool(false)
 bool(false)

Modified: php/php-src/branches/PHP_5_3/ext/standard/url.c
===================================================================
--- php/php-src/branches/PHP_5_3/ext/standard/url.c     2011-02-04 19:22:43 UTC 
(rev 308034)
+++ php/php-src/branches/PHP_5_3/ext/standard/url.c     2011-02-04 21:41:15 UTC 
(rev 308035)
@@ -180,15 +180,20 @@
                parse_port:
                p = e + 1;
                pp = p;
-
+
                while (pp-p < 6 && isdigit(*pp)) {
                        pp++;
                }
-
+
                if (pp-p < 6 && (*pp == '/' || *pp == '\0')) {
                        memcpy(port_buf, p, (pp-p));
                        port_buf[pp-p] = '\0';
                        ret->port = atoi(port_buf);
+                       if (!ret->port && (pp - p) > 0) {
+                               STR_FREE(ret->scheme);
+                               efree(ret);
+                               return NULL;
+                       }
                } else {
                        goto just_path;
                }
@@ -267,6 +272,13 @@
                                memcpy(port_buf, p, (e-p));
                                port_buf[e-p] = '\0';
                                ret->port = atoi(port_buf);
+                               if (!ret->port && (e - p)) {
+                                       STR_FREE(ret->scheme);
+                                       STR_FREE(ret->user);
+                                       STR_FREE(ret->pass);
+                                       efree(ret);
+                                       return NULL;
+                               }
                        }
                        p--;
                }

Modified: php/php-src/trunk/ext/filter/tests/015.phpt
===================================================================
--- php/php-src/trunk/ext/filter/tests/015.phpt 2011-02-04 19:22:43 UTC (rev 
308034)
+++ php/php-src/trunk/ext/filter/tests/015.phpt 2011-02-04 21:41:15 UTC (rev 
308035)
@@ -28,6 +28,7 @@
 'news:news.php.net',
 'file://foo/bar',
 "http://\r\n/bar";,
+"http://example.com:qq";
 );
 foreach ($values as $value) {
        var_dump(filter_var($value, FILTER_VALIDATE_URL));
@@ -70,6 +71,7 @@
 string(14) "file://foo/bar"
 bool(false)
 bool(false)
+bool(false)
 string(10) "http://qwe";
 bool(false)
 bool(false)

Modified: php/php-src/trunk/ext/standard/url.c
===================================================================
--- php/php-src/trunk/ext/standard/url.c        2011-02-04 19:22:43 UTC (rev 
308034)
+++ php/php-src/trunk/ext/standard/url.c        2011-02-04 21:41:15 UTC (rev 
308035)
@@ -180,15 +180,20 @@
                parse_port:
                p = e + 1;
                pp = p;
-
+
                while (pp-p < 6 && isdigit(*pp)) {
                        pp++;
                }
-
+
                if (pp-p < 6 && (*pp == '/' || *pp == '\0')) {
                        memcpy(port_buf, p, (pp-p));
                        port_buf[pp-p] = '\0';
                        ret->port = atoi(port_buf);
+                       if (!ret->port && (pp - p) > 0) {
+                               STR_FREE(ret->scheme);
+                               efree(ret);
+                               return NULL;
+                       }
                } else {
                        goto just_path;
                }
@@ -267,6 +272,13 @@
                                memcpy(port_buf, p, (e-p));
                                port_buf[e-p] = '\0';
                                ret->port = atoi(port_buf);
+                               if (!ret->port && (e - p)) {
+                                       STR_FREE(ret->scheme);
+                                       STR_FREE(ret->user);
+                                       STR_FREE(ret->pass);
+                                       efree(ret);
+                                       return NULL;
+                               }
                        }
                        p--;
                }

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

Reply via email to