moriyoshi Wed Dec 3 15:59:12 2003 EDT Modified files: (Branch: PHP_4_3) /php-src/ext/standard url.c Log: MFH(r-1.71): Possible fix for bug #26391 (parse_url() destroys strings that contain a character in range of 0x80-0xff) # I couldn't reproduce it with Panther though. Index: php-src/ext/standard/url.c diff -u php-src/ext/standard/url.c:1.58.2.9 php-src/ext/standard/url.c:1.58.2.10 --- php-src/ext/standard/url.c:1.58.2.9 Mon Oct 13 00:28:33 2003 +++ php-src/ext/standard/url.c Wed Dec 3 15:59:12 2003 @@ -15,7 +15,7 @@ | Author: Jim Winstead <[EMAIL PROTECTED]> | +----------------------------------------------------------------------+ */ -/* $Id: url.c,v 1.58.2.9 2003/10/13 04:28:33 iliaa Exp $ */ +/* $Id: url.c,v 1.58.2.10 2003/12/03 20:59:12 moriyoshi Exp $ */ #include <stdlib.h> #include <string.h> @@ -104,7 +104,7 @@ * correctly parse things like a.com:80 */ p = e + 1; - while (isdigit(*p)) { + while (isdigit((int)*(unsigned char *)p)) { p++; } @@ -145,7 +145,7 @@ p = e + 1; pp = p; - while (pp-p < 6 && isdigit(*pp)) { + while (pp-p < 6 && isdigit((int)*(unsigned char *)pp)) { pp++; } @@ -330,12 +330,12 @@ int value; int c; - c = s[0]; + c = ((unsigned char *)s)[0]; if (isupper(c)) c = tolower(c); value = (c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10) * 16; - c = s[1]; + c = ((unsigned char *)s)[1]; if (isupper(c)) c = tolower(c); value += c >= '0' && c <= '9' ? c - '0' : c - 'a' + 10; @@ -443,7 +443,7 @@ while (len--) { if (*data == '+') *dest = ' '; - else if (*data == '%' && len >= 2 && isxdigit((int) *(data + 1)) && isxdigit((int) *(data + 2))) { + else if (*data == '%' && len >= 2 && isxdigit((int) *(unsigned char *)(data + 1)) && isxdigit((int) *(unsigned char *)(data + 2))) { #ifndef CHARSET_EBCDIC *dest = (char) php_htoi(data + 1); #else
-- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php