svn: /php/php-src/trunk/ext/standard/ string.c tests/strings/bug60801.phpt
| From: | Adam Harvey | Date: | Mon, 30 Jan 2012 13:29:15 +0000 |
| Subject: | svn: /php/php-src/trunk/ext/standard/ string.c tests/strings/bug60801.phpt | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-67577@lists.php.net to get a copy of this message | ||
aharvey Mon, 30 Jan 2012 13:29:15 +0000
Revision: http://svn.php.net/viewvc?view=revision&revision=322934
Log:
Fix bug #60801 (strpbrk() mishandles NUL byte) on trunk only for now.
Bug: https://bugs.php.net/60801 (Assigned) strpbrk()
mishandles NUL byte
Changed paths:
U php/php-src/trunk/ext/standard/string.c
A php/php-src/trunk/ext/standard/tests/strings/bug60801.phpt
Modified: php/php-src/trunk/ext/standard/string.c
===================================================================
--- php/php-src/trunk/ext/standard/string.c 2012-01-30 13:02:10 UTC (rev 322933)
+++ php/php-src/trunk/ext/standard/string.c 2012-01-30 13:29:15 UTC (rev 322934)
@@ -5315,7 +5315,7 @@
{
char *haystack, *char_list;
int haystack_len, char_list_len;
- char *p;
+ char *haystack_ptr, *cl_ptr;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss", &haystack,
&haystack_len, &char_list, &char_list_len) == FAILURE) {
RETURN_FALSE;
@@ -5326,11 +5326,15 @@
RETURN_FALSE;
}
- if ((p = strpbrk(haystack, char_list))) {
- RETURN_STRINGL(p, (haystack + haystack_len - p), 1);
- } else {
- RETURN_FALSE;
+ for (haystack_ptr = haystack; haystack_ptr < (haystack + haystack_len); ++haystack_ptr) {
+ for (cl_ptr = char_list; cl_ptr < (char_list + char_list_len); ++cl_ptr) {
+ if (*cl_ptr == *haystack_ptr) {
+ RETURN_STRINGL(haystack_ptr, (haystack + haystack_len - haystack_ptr), 1);
+ }
+ }
}
+
+ RETURN_FALSE;
}
/* }}} */
Added: php/php-src/trunk/ext/standard/tests/strings/bug60801.phpt
===================================================================
--- php/php-src/trunk/ext/standard/tests/strings/bug60801.phpt (rev 0)
+++ php/php-src/trunk/ext/standard/tests/strings/bug60801.phpt 2012-01-30 13:29:15 UTC (rev 322934)
@@ -0,0 +1,23 @@
+--TEST--
+Bug #60801 (strpbrk() mishandles NUL byte)
+--FILE--
+<?php
+$haystack = "foob\x00ar";
+$needle = "a\x00b";
+
+var_dump(strpbrk($haystack, 'ar'));
+var_dump(strpbrk($haystack, "\x00"));
+var_dump(strpbrk($haystack, $needle));
+var_dump(strpbrk('foobar', $needle));
+var_dump(strpbrk("\x00", $needle));
+var_dump(strpbrk('xyz', $needle));
+var_dump(strpbrk($haystack, 'xyz'));
+?>
+--EXPECT--
+string(2) "ar"
+string(3) "
+string(4) "b
+string(3) "bar"
+string(1) "
+bool(false)
+bool(false)
Property changes on: php/php-src/trunk/ext/standard/tests/strings/bug60801.phpt
___________________________________________________________________
Added: svn:mime-type
+ text/x-php