#47745 [Asn]: FILTER_VALIDATE_INT doesn't allow minimum integer
ID: 47745
Updated by: scottmac@php.net
Reported By: for-bugs at hnw dot jp
Status: Assigned
Bug Type: Filter related
Operating System: *
PHP Version: 5.2.9
Assigned To: iliaa
New Comment:
Must have been sleep deprived when I looked at this last.
Previous Comments:
------------------------------------------------------------------------
[2009-03-29 16:47:47] pajoye@php.net
The only problem is the value we use for the max unsigned range. It
should be changed to allow - 2^31, but I did not check the code more in
details, but Ilia is on it so :)
------------------------------------------------------------------------
[2009-03-29 16:43:23] iliaa@php.net
We don't eat a 0. When parsing #s we follow this logic:
Let's say X is our temp var containing the 1st digit and the number to
be parsed is 435.
X = X * 10;
X += 3; (X = 43)
X = X * 10;
X += 5; (X = 435)
There is no 0 eating etc...
------------------------------------------------------------------------
[2009-03-26 22:44:17] scottmac@php.net
For some reason php_filter_parse_int multiplies the integer by ten then
attempts to eat a 0? This is causing overflow and resulting in an
error.
I have no idea why its doing this though. ilia?
------------------------------------------------------------------------
[2009-03-21 23:34:01] for-bugs at hnw dot jp
Description:
------------
Although -2147483648 is the minimum integer in 32bit environment,
FILTER_VALIDATE_INT says -2147483648 is invalid as integer.
Reproduce code:
---------------
<?php
var_dump(intval("-2147483648"));
var_dump(filter_var("-2147483648", FILTER_VALIDATE_INT));
Expected result:
----------------
int(-2147483648)
int(-2147483648)
Actual result:
--------------
int(-2147483648)
bool(false)
------------------------------------------------------------------------
--
Edit this bug report at http://bugs.php.net/?id=47745&edit=1
Thread (8 messages)