Req #55451 [Opn->Csd]: substr_compare NULL length interpreted as 0

From: Date: Sun, 07 Aug 2016 16:51:38 +0000
Subject: Req #55451 [Opn->Csd]: substr_compare NULL length interpreted as 0
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-203041@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=55451&edit=1

 ID:                 55451
 Updated by:         nikic@php.net
 Reported by:        datibbaw@php.net
 Summary:            substr_compare NULL length interpreted as 0
-Status:             Open
+Status:             Closed
 Type:               Feature/Change Request
 Package:            Unknown/Other Function
 Operating System:   NA
 PHP Version:        Irrelevant
 Block user comment: N
 Private report:     N

 New Comment:

Automatic comment on behalf of lauri.kentta@gmail.com
Revision: http://git.php.net/?p=php-src.git;a=commit;h=e616bc8694f5a2d536462a77d629eca614626c3e
Log: Fix bug #55451


Previous Comments:
------------------------------------------------------------------------
[2016-08-03 09:38:55] lauri dot kentta at gmail dot com

Related To: Bug #55451

------------------------------------------------------------------------
[2016-08-03 09:38:54] lauri dot kentta at gmail dot com

Notice that the original test doesn't work anymore, since the NULL is converted to zero length
and currently zero length is accepted and will always report equal (empty) substrings.

Better test:

--TEST--
Bug #55451 (substr_compare with NULL as default length)
--FILE--
<?php
var_dump(substr_compare("abcde", "ABCD", 0, NULL, false));   // not equal
var_dump(substr_compare("abcde", "ABCD", 0, NULL, true));    // not equal
var_dump(substr_compare("abcde", "ABCDE", 0, NULL, false));  // not equal
var_dump(substr_compare("abcde", "ABCDE", 0, NULL, true));   // equal
?>
--EXPECT--
int(1)
int(1)
int(1)
int(0)

------------------------------------------------------------------------
[2011-08-18 15:56:29] datibbaw@php.net

The following patch has been added/updated:

Patch Name: substr_compare_optlen
Revision:   1313682989
URL:        https://bugs.php.net/patch-display.php?bug=55451&patch=substr_compare_optlen&revision=1313682989

------------------------------------------------------------------------
[2011-08-18 15:55:57] datibbaw@php.net

Description:
------------
The $length parameter of this function is optional in the documentation, but 
currently it can't be skipped to only set the case sensitivity flag. Values like 
null or false get converted into 0 which causes a warning and the function returns 
false.

Using null to skip the $length parameter would be nice.

Test script:
---------------
<?php

// should output: 0
echo substr_compare("hello World", "world", 6, null, true), PHP_EOL;

?>

Expected result:
----------------
0

Actual result:
--------------
Warning: substr_compare(): The length must be greater than zero


------------------------------------------------------------------------



--
Edit this bug report at https://bugs.php.net/bug.php?id=55451&edit=1


Thread (4 messages)

« previous php.bugs (#203041) next »