php.net |  support |  documentation |  report a bug |  advanced search |  search howto |  statistics |  random bug |  login
Bug #12505 array_sum function total calculate error
Submitted: 2001-08-01 04:02 UTC Modified: 2001-08-03 15:15 UTC
From: omeroz at kamilkoc dot com dot tr Assigned: jeroen (profile)
Status: Closed Package: Arrays related
PHP Version: latest CVS (08/01/01) OS: Red Hat Linux 6.1
Private report: No CVE-ID: None
 [2001-08-01 04:02 UTC] omeroz at kamilkoc dot com dot tr
$tt=array(382478633,367687181,452504275,471367521,848270658,1181944543);
$total_tt=array_sum($tt);
echo "Total_tt=".$total_tt;

// Prints  Total_tt=-590714485

Must be 3704252811.



Patches

Add a Patch

Pull Requests

Add a Pull Request

History

AllCommentsChangesGit/SVN commitsRelated reports
 [2001-08-01 05:56 UTC] jmcastagnetto@php.net
The problem is with the typecasting to LONG, if you use the code:

<?php
$tt=array(382478633.0,367687181.0,452504275.0,471367521.0,848270658.0,1181944543.0);
echo array_sum($tt)."\n";
?>

The result is the correct one (3704252811)

Solution would be to

1) use floating point representation for bign numbers in PHP code (add caveat to the manual perhaps?)

or

2) check that the array_sum result is nor overflowing LONG in the C code implementation and bump the type to DOUBLE if it does.

second option would be better IMHO
 [2001-08-01 08:36 UTC] andy@php.net
status -> analyzed
 [2001-08-01 16:55 UTC] jeroen@php.net
Hm, same problem as the other overflow-things. Assigned to myself.

Are there other dangerous functions like this anywhere?
 [2001-08-03 15:15 UTC] jeroen@php.net
Fixed in CVS, will be in 4.0.7
 
PHP Copyright © 2001-2018 The PHP Group
All rights reserved.
Last updated: Sat Oct 20 09:01:25 2018 UTC