Edit report at https://bugs.php.net/bug.php?id=61531&edit=1

 ID:                 61531
 Updated by:         yohg...@php.net
 Reported by:        iblue at gmx dot net
 Summary:            Integer Overflow in all printf functions
-Status:             Open
+Status:             Analyzed
 Type:               Bug
 Package:            Strings related
 Operating System:   GNU/Linux
 PHP Version:        5.4.0
 Block user comment: N
 Private report:     N

 New Comment:

php_sprintf_getnumber() compares with INT_MAX and returns -1, so this happens 
in 
64 bit architecture, too.


Previous Comments:
------------------------------------------------------------------------
[2012-03-28 08:21:51] yohg...@php.net

This happens because argnum is int and php_sprintf_getnumber() just returns -1 
when there is overflow.

ext/standard/formatted_print.c
---------
if (format[temppos] == '$') {
        argnum = php_sprintf_getnumber(format, &inpos);
        if (argnum <= 0) {
                efree(result);
                efree(args);
                php_error_docref(NULL TSRMLS_CC, E_WARNING, "Argument number 
must be greater than zero");
                return NULL;
        }
        multiuse = 1;
        inpos++;  /* skip the '$' */
} else {
-------------

I don't think we have to deal this more gracefully. Anyone?

------------------------------------------------------------------------
[2012-03-27 21:07:12] iblue at gmx dot net

Description:
------------
There is an integer overflow in *printf.

Test script:
---------------
<?php
echo sprintf('%2147483646$s', "foo");
echo sprintf('%2147483647$s', "foo");


Expected result:
----------------
PHP Warning:  sprintf(): Too few arguments in /home/iblue/test.php on line 2
PHP Warning:  sprintf(): Too few arguments in /home/iblue/test.php on line 3


Actual result:
--------------
PHP Warning:  sprintf(): Too few arguments in /home/iblue/test.php on line 2
PHP Warning:  sprintf(): Argument number must be greater than zero in 
/home/iblue/test.php on line 3



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



-- 
Edit this bug report at https://bugs.php.net/bug.php?id=61531&edit=1

Reply via email to