mirror of
https://github.com/php/php-src.git
synced 2024-10-19 15:34:25 +00:00
42 lines
906 B
Plaintext
42 lines
906 B
Plaintext
|
--TEST--
|
||
|
Hex integer overflow
|
||
|
--SKIPIF--
|
||
|
<?php if (!extension_loaded("filter")) die("skip"); ?>
|
||
|
--FILE--
|
||
|
<?php
|
||
|
function hex_inc($s) {
|
||
|
$len = strlen($s);
|
||
|
while ($len > 0) {
|
||
|
$len--;
|
||
|
if ($s[$len] != 'f') {
|
||
|
if ($s[$len] == '9') {
|
||
|
$s[$len] = 'a';
|
||
|
} else {
|
||
|
$s[$len] = $s[$len] + 1;
|
||
|
}
|
||
|
return $s;
|
||
|
}
|
||
|
$s[$len] = '0';
|
||
|
}
|
||
|
return '1'.$s;
|
||
|
}
|
||
|
|
||
|
|
||
|
$s = sprintf("%x", PHP_INT_MAX);
|
||
|
var_dump(is_long(filter_var('0x'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))));
|
||
|
|
||
|
$s = hex_inc($s);
|
||
|
var_dump(is_long(filter_var('0x'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))));
|
||
|
|
||
|
$s = sprintf("%x", ~0);
|
||
|
var_dump(is_long(filter_var('0x'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX))));
|
||
|
|
||
|
$s = hex_inc($s);
|
||
|
var_dump(filter_var('0x'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_HEX)));
|
||
|
?>
|
||
|
--EXPECT--
|
||
|
bool(true)
|
||
|
bool(true)
|
||
|
bool(true)
|
||
|
bool(false)
|