|  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #47102 strripos issues unexpected warning with UNICODE haystack
Submitted: 2009-01-14 16:06 UTC Modified: 2009-01-17 20:43 UTC
From: wharmby at uk dot ibm dot com Assigned:
Status: Closed Package: Strings related
PHP Version: 6CVS-2009-01-14 (snap) OS: Windows XP
Private report: No CVE-ID: None
 [2009-01-14 16:06 UTC] wharmby at uk dot ibm dot com
I get an unexpected warning msg when I specify an haystack with a non-zero offset. 

I think the problem lies in the following code in ext/standard/string.c  

2913  if (haystack_type == IS_UNICODE) {
2914   	if (offset >= 0) {
2915 	   U16_FWD_N(haystack.u, cu_offset, haystack_len, offset);
2916 	   if (cu_offset > haystack_len - needle_len) {
2917 	   php_error_docref(NULL TSRMLS_CC, E_NOTICE, "Offset is greater than the length of haystack string");
2918  	   RETURN_FALSE;
2919 	}
2920 	u_p = haystack.u + cu_offset;
2921 	u_e = haystack.u + haystack_len - needle_len;
2922  } else { 

If (cu_offset > haystack_len - needle_len) then FALSE should be returned but the warning is bogus; that should only be output if cu_offset > haystack_len.

Reproduce code:

$haystack = "abcdefg";
$needle = "abcdefg";
var_dump( strripos($haystack, $needle, 0) );
var_dump( strripos($haystack, $needle, 1) );


Expected result:

Actual result:
PHP Notice:  strripos(): Offset is greater than the length of haystack string in .... etc 


Add a Patch

Pull Requests

Add a Pull Request


AllCommentsChangesGit/SVN commitsRelated reports
 [2009-01-15 13:43 UTC] wharmby at uk dot ibm dot com
8 new tests for strripos() just checked into CVS. 3 fail on PHP6 because of this bug and have XFAIL sections which need removing once this bug is fixed. They are:

 [2009-01-17 20:43 UTC]
This bug has been fixed in CVS.

Snapshots of the sources are packaged every three hours; this change
will be in the next snapshot. You can grab the snapshot at
Thank you for the report, and for helping us make PHP better.

Thanks Andy.

Fixed and removed the XFAIL sections.
PHP Copyright © 2001-2020 The PHP Group
All rights reserved.
Last updated: Sat Jan 18 14:01:23 2020 UTC