iliaa Mon Oct 13 00:27:24 2003 EDT
Modified files:
/php-src/ext/standard/tests/strings url_t.phpt
/php-src/ext/standard url.c
Log:
Fixed bug #25800 (parse_url() could not parse urls with empty port).
Index: php-src/ext/standard/tests/strings/url_t.phpt
diff -u php-src/ext/standard/tests/strings/url_t.phpt:1.5
php-src/ext/standard/tests/strings/url_t.phpt:1.6
--- php-src/ext/standard/tests/strings/url_t.phpt:1.5 Mon Dec 30 11:42:49 2002
+++ php-src/ext/standard/tests/strings/url_t.phpt Mon Oct 13 00:27:23 2003
@@ -64,7 +64,11 @@
'mailto:[EMAIL PROTECTED]',
'/foo.php?a=b&c=d',
'foo.php?a=b&c=d',
-'http://user:[EMAIL PROTECTED]:8080?bar=1&boom=0'
+'http://user:[EMAIL PROTECTED]:8080?bar=1&boom=0',
+'file:///path/to/file',
+'file://path/to/file',
+'file:/path/to/file',
+'http://1.2.3.4:/abc.asp?a=1&b=2'
);
foreach ($sample_urls as $url) {
@@ -615,4 +619,34 @@
string(6) "passwd"
["query"]=>
string(12) "bar=1&boom=0"
+}
+array(2) {
+ ["scheme"]=>
+ string(4) "file"
+ ["path"]=>
+ string(13) "/path/to/file"
+}
+array(3) {
+ ["scheme"]=>
+ string(4) "file"
+ ["host"]=>
+ string(4) "path"
+ ["path"]=>
+ string(8) "/to/file"
+}
+array(2) {
+ ["scheme"]=>
+ string(4) "file"
+ ["path"]=>
+ string(13) "/path/to/file"
+}
+array(4) {
+ ["scheme"]=>
+ string(4) "http"
+ ["host"]=>
+ string(7) "1.2.3.4"
+ ["path"]=>
+ string(8) "/abc.asp"
+ ["query"]=>
+ string(7) "a=1&b=2"
}
Index: php-src/ext/standard/url.c
diff -u php-src/ext/standard/url.c:1.68 php-src/ext/standard/url.c:1.69
--- php-src/ext/standard/url.c:1.68 Mon Aug 11 19:16:53 2003
+++ php-src/ext/standard/url.c Mon Oct 13 00:27:23 2003
@@ -15,7 +15,7 @@
| Author: Jim Winstead <[EMAIL PROTECTED]> |
+----------------------------------------------------------------------+
*/
-/* $Id: url.c,v 1.68 2003/08/11 23:16:53 iliaa Exp $ */
+/* $Id: url.c,v 1.69 2003/10/13 04:27:23 iliaa Exp $ */
#include <stdlib.h>
#include <string.h>
@@ -197,17 +197,17 @@
if ((p = memchr(s, ':', (e-s)))) {
if (!ret->port) {
p++;
- if ( e-p > 5 || e-p < 1 ) { /* port cannot be longer then 5
characters */
+ if (e-p > 5) { /* port cannot be longer then 5 characters */
STR_FREE(ret->scheme);
STR_FREE(ret->user);
STR_FREE(ret->pass);
efree(ret);
return NULL;
+ } else if (e - p > 0) {
+ memcpy(port_buf, p, (e-p));
+ port_buf[e-p] = '\0';
+ ret->port = atoi(port_buf);
}
-
- memcpy(port_buf, p, (e-p));
- port_buf[e-p] = '\0';
- ret->port = atoi(port_buf);
p--;
}
} else {
--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php