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

 ID:                 64109
 Updated by:         larue...@php.net
 Reported by:        xi dot wang at gmail dot com
 Summary:            incorrect use of abs() in array_pad()
 Status:             Open
 Type:               Bug
 Package:            Arrays related
 PHP Version:        master-Git-2013-01-30 (Git)
-Assigned To:        
+Assigned To:        laruence
 Block user comment: N
 Private report:     N

 New Comment:

actually, there are some other issues,  like use abs on a long number.  

I am not sure whether this is a critical bug, but will try to fix it only for 
5.4+


Previous Comments:
------------------------------------------------------------------------
[2013-01-30 21:33:10] xi dot wang at gmail dot com

Description:
------------
Using `abs(pad_size) < 0' to catch the LONG_MIN case invokes undefined behavior 
in 
C.  gcc simply assumes abs(pad_size) must be non-negative and discards the 
check.

Test script:
---------------
<?php
// This is for 64-bit systems.
$input = array(12, 10, 9);
$input = array_pad($input, -9223372036854775808, 0);
var_dump($input);
?>

Expected result:
----------------
Warning: array_pad(): You may only pad up to 1048576 elements at a time in 
t.php 
on line 3
bool(false)

Actual result:
--------------
array(3) {
  [0]=>
  int(12)
  [1]=>
  int(10)
  [2]=>
  int(9)
}


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



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

Reply via email to