mirror of
https://github.com/php/php-src.git
synced 2024-10-20 16:02:44 +00:00
67583e7aa5
. fixed integer overflow . fixed buffer overflow/underflow . added more strict IP validation . reimplemented float number validation
38 lines
854 B
PHP
Executable File
38 lines
854 B
PHP
Executable File
--TEST--
|
|
Octal integer overflow
|
|
--SKIPIF--
|
|
<?php if (!extension_loaded("filter")) die("skip"); ?>
|
|
--FILE--
|
|
<?php
|
|
function octal_inc($s) {
|
|
$len = strlen($s);
|
|
while ($len > 0) {
|
|
$len--;
|
|
if ($s[$len] != '7') {
|
|
$s[$len] = $s[$len] + 1;
|
|
return $s;
|
|
}
|
|
$s[$len] = '0';
|
|
}
|
|
return '1'.$s;
|
|
}
|
|
|
|
|
|
$s = sprintf("%o", PHP_INT_MAX);
|
|
var_dump(is_long(filter_var('0'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL))));
|
|
|
|
$s = octal_inc($s);
|
|
var_dump(is_long(filter_var('0'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL))));
|
|
|
|
$s = sprintf("%o", ~0);
|
|
var_dump(is_long(filter_var('0'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL))));
|
|
|
|
$s = octal_inc($s);
|
|
var_dump(filter_var('0'.$s, FILTER_VALIDATE_INT, array("flags"=>FILTER_FLAG_ALLOW_OCTAL)));
|
|
?>
|
|
--EXPECT--
|
|
bool(true)
|
|
bool(true)
|
|
bool(true)
|
|
bool(false)
|