#47745 [Asn->Csd]: FILTER_VALIDATE_INT doesn't allow minimum integer

[email protected]
Newsgroups php.bugs
Message-ID <[email protected]>
 ID:               47745
 Updated by:       [email protected]
 Reported By:      for-bugs at hnw dot jp
-Status:           Assigned
+Status:           Closed
 Bug Type:         Filter related
 Operating System: *
 PHP Version:      5.2.9
 Assigned To:      dmitry
 New Comment:

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
http://snaps.php.net/.
 
Thank you for the report, and for helping us make PHP better.




Previous Comments:
------------------------------------------------------------------------

[2009-03-31 09:27:50] for-bugs at hnw dot jp

Result on 64bit environment:


$ php -r 'var_dump(intval((string)~PHP_INT_MAX));'
int(-9223372036854775808)
$ php -r 'var_dump(filter_var((string)~PHP_INT_MAX,
FILTER_VALIDATE_INT));'
bool(false)


There is same problem on 64bit environment, I think.

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

[2009-03-30 19:47:42] [email protected]

The multiplication is done by the standard ZEND macro, so if there is a

limit issue it needs to be handled inside the Zend Engine.

That said on my 64bit machine, I cannot reproduce the issue via -
PHP_INT_MAX

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

[2009-03-29 21:38:18] [email protected]

Must have been sleep deprived when I looked at this last.

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

[2009-03-29 16:47:47] [email protected]

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] [email protected]

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...

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

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/47745

-- 
Edit this bug report at http://bugs.php.net/?id=47745&edit=1
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.