From:             
Operating system: win32 (vista x86)
PHP version:      5.3.10
Package:          PCRE related
Bug Type:         Bug
Bug description:PCRE - Stack Overflow due to unlimited recursions in 
preg_match() crashing php5

Description:
------------
stack overflow in php5ts.dll

Unhandled exception at 0x60b7b0b3 (php5ts.dll) in httpd.exe: 0xC00000FD:
Stack overflow.
module: php5ts.dll


affected php versions: 5.3.8/5.3.9/5.3.10 (win32)
src: ./ext/pcre/php_pcre.c:497
     ./ext/pcre/pcre_exec.c:649  (position on stack overflow, random since
this is a stack overflow)


btw. yes i know i can set pcre.recursion_limit. this might fix the symptoms
but not the problem. php crashes even with pcre.recursion_limit=650. for
example other projects do not crash on maxed out recursions...

Regards,
Martin
-------------
Call Stack:
-----------

... php5ts.dll!match() repeatet until stack exhausted ....
        php5ts.dll!match(const unsigned char * eptr=0x04d6e66f, const unsigned
char * ecode=0x02705ca0, const unsigned char * mstart=0x04d6e66f, const
unsigned char * markptr=0x00000000, int offset_top=0x00000004, match_data *
md=0x0230f914, unsigned long ims=0x00000005, eptrblock * eptrb=0x00000000,
int flags=0x00000000, unsigned int rdepth=0x00000001)  Line 1515 + 0x2f
bytes   C
        php5ts.dll!match(const unsigned char * eptr=0x04d6e66f, const unsigned
char * ecode=0x02705c98, const unsigned char * mstart=0x04d6e66f, const
unsigned char * markptr=0x00000000, int offset_top=0x00000002, match_data *
md=0x0230f914, unsigned long ims=0x00000005, eptrblock * eptrb=0x00000000,
int flags=0x00000000, unsigned int rdepth=0x00000000)  Line 834 + 0x40
bytes   C
        php5ts.dll!php_pcre_exec(const real_pcre * argument_re=0x02705c70, const
pcre_extra * extra_data=0x0230fa5c, const char * subject=0x04d6e5f0, int
length=0x00000467, int start_offset=0x00000000, int options=0x00000000, int
* offsets=0x04d6eb10, int offsetcount=0x0000000c)  Line 6099 + 0x3f
bytes   C
        php5ts.dll!php_pcre_match_impl(pcre_cache_entry * pce=0x04f79918, char *
subject=0x04d6e5f0, int subject_len=0x00000467, _zval_struct *
return_value=0x04d6eaa0, _zval_struct * subpats=0x04d6ea80, int
global=0x00000000, int use_flags=0x00000000, long flags=0x00000000, long
start_offset=0x00000000, void * * * tsrm_ls=0x0278ca60)  Line 629       C
        php5ts.dll!php_do_pcre_match(int ht=0x00000003, _zval_struct *
return_value=0x00000000, _zval_struct * * return_value_ptr=0x60b72db7,
_zval_struct * this_ptr=0x60b72db7, int return_value_used=0x60b72db7, void
* * * tsrm_ls=0x00000000, int global=0x00000000)  Line 520 + 0x2b bytes C
        php5ts.dll!zif_preg_match(int ht=0x00000003, _zval_struct *
return_value=0x04d6eaa0, _zval_struct * * return_value_ptr=0x00000000,
_zval_struct * this_ptr=0x00000000, int return_value_used=0x00000001, void
* * * tsrm_ls=0x0278ca60)  Line 771 + 0x17 bytes        C
        php5ts.dll!zend_do_fcall_common_helper_SPEC(_zend_execute_data *
execute_data=0x04da0080, void * * * tsrm_ls=0x0278ca00)  Line 320 + 0x41
bytes   C
        php5ts.dll!ZEND_DO_FCALL_SPEC_CONST_HANDLER(_zend_execute_data *
execute_data=0x00000000, void * * * tsrm_ls=0x00000000)  Line 1640 + 0xe
bytes   C
        php5ts.dll!execute(_zend_op_array * op_array=0x04d6dca0, void * * *
tsrm_ls=0x0278ca00)  Line 107 + 0xa bytes       C
        php5ts.dll!zend_execute_scripts(int type=0x00000008, void * * *
tsrm_ls=0x0278ca60, _zval_struct * * retval=0x00000000, int
file_count=0x00000003, ...)  Line 1237  C
        php5ts.dll!php_execute_script(_zend_file_handle *
primary_file=0x0230fe44, void * * * tsrm_ls=0x0278ca60)  Line 2308 + 0x12
bytes   C
        php5apache2_2.dll!php_handler(request_rec * r=0x01f77130)  Line 669 + 
0xe
bytes   C
        libhttpd.dll!6ff02515()         
....


System infos (this is from php 5.3.8, same behavior in 5.3.10):
-------------

System  Windows NT xx6.0 build 6002 (Windows Vista Business Edition Service
Pack 2) i586 

Architecture    x86
Configure Command       cscript /nologo configure.js "--enable-snapshot-build"
"--disable-isapi" "--enable-debug-pack" "--disable-isapi" "--without-mssql"
"--without-pdo-mssql" "--without-pi3web"
"--with-pdo-oci=D:\php-sdk\oracle\instantclient10\sdk,shared"
"--with-oci8=D:\php-sdk\oracle\instantclient10\sdk,shared"
"--with-oci8-11g=D:\php-sdk\oracle\instantclient11\sdk,shared"
"--enable-object-out-dir=../obj/" "--enable-com-dotnet"
"--with-mcrypt=static" "--disable-static-analyze" 



Apache Version  Apache/2.2.21 (Win32) mod_ssl/2.2.21 OpenSSL/1.0.0e
PHP/5.3.8 

pcre
PCRE (Perl Compatible Regular Expressions) Support      enabled
PCRE Library Version    8.12 2011-01-15 

Test script:
---------------
<?php
$data=
'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"praeparari"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAApraeparariAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA';
//+1A to crash => 10.494~
print_r (preg_match("/(\"praeparari\")(.)*(\.)/ixs",$data)); //crash
print_r (preg_match("/(.)*/ixs",$data));  //crash
?>

Expected result:
----------------
no crash. 

Actual result:
--------------
httpd worker crashes due to crash in php5ts


-- 
Edit bug report at https://bugs.php.net/bug.php?id=61213&edit=1
-- 
Try a snapshot (PHP 5.4):            
https://bugs.php.net/fix.php?id=61213&r=trysnapshot54
Try a snapshot (PHP 5.3):            
https://bugs.php.net/fix.php?id=61213&r=trysnapshot53
Try a snapshot (trunk):              
https://bugs.php.net/fix.php?id=61213&r=trysnapshottrunk
Fixed in SVN:                        
https://bugs.php.net/fix.php?id=61213&r=fixed
Fixed in SVN and need be documented: 
https://bugs.php.net/fix.php?id=61213&r=needdocs
Fixed in release:                    
https://bugs.php.net/fix.php?id=61213&r=alreadyfixed
Need backtrace:                      
https://bugs.php.net/fix.php?id=61213&r=needtrace
Need Reproduce Script:               
https://bugs.php.net/fix.php?id=61213&r=needscript
Try newer version:                   
https://bugs.php.net/fix.php?id=61213&r=oldversion
Not developer issue:                 
https://bugs.php.net/fix.php?id=61213&r=support
Expected behavior:                   
https://bugs.php.net/fix.php?id=61213&r=notwrong
Not enough info:                     
https://bugs.php.net/fix.php?id=61213&r=notenoughinfo
Submitted twice:                     
https://bugs.php.net/fix.php?id=61213&r=submittedtwice
register_globals:                    
https://bugs.php.net/fix.php?id=61213&r=globals
PHP 4 support discontinued:          
https://bugs.php.net/fix.php?id=61213&r=php4
Daylight Savings:                    https://bugs.php.net/fix.php?id=61213&r=dst
IIS Stability:                       
https://bugs.php.net/fix.php?id=61213&r=isapi
Install GNU Sed:                     
https://bugs.php.net/fix.php?id=61213&r=gnused
Floating point limitations:          
https://bugs.php.net/fix.php?id=61213&r=float
No Zend Extensions:                  
https://bugs.php.net/fix.php?id=61213&r=nozend
MySQL Configuration Error:           
https://bugs.php.net/fix.php?id=61213&r=mysqlcfg

Reply via email to