ID:               50518
 Updated by:       paj...@php.net
 Reported By:      Ryan_Hollister at eloyalty dot net
-Status:           Open
+Status:           Bogus
 Bug Type:         *Regular Expressions
 Operating System: Windows XP 32bit
 PHP Version:      5.3SVN-2009-12-18 (snap)
 New Comment:

Not a php problem. See bug #47689 about how to "fix" apache.


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

[2009-12-18 15:58:48] Ryan_Hollister at eloyalty dot net

Description:
------------
I have a regular expression that would not crash APACHE/PHP in PHP
5.2.8 but now that I have upgraded to PHP 5.3.1 it is unable to execute
the code.

Clearly from the dump there is a stack overflow. My reason for pointing
toward a bug is that 1) it executed fine in 5.2.8 and 2) It only fails
on certain strings.

Some other notes:

1) It executes and completes fine if it is run command line.

2) If I set the PCRE.backtrack_limit = 1100 it will complete fine.

Certainly neither of these options are resolutions to my problem as I
run a webserver using APACHE and I need the backtrack_limit to be much
higher than 1100 bytes.

Reproduce code:
---------------
$Pattern = "/\b(?!((yellow mellow)|(help you)|(uh? -? ?huh)|(that('s|
is) (ok|fine|back))))((?<!['-])(?!_TONES_)[\w'-]+(
(?<!['-])(?!_TONES_)[\w'-]+)+) ?( \8)+[ \Z]/i";

//Below is a bad subject
$Subject = "hello and and and thank you Sam and for your protection
would you mind seeking the last four digits of your Social Security
number OK thank you very much a company that OK _TONES_ right OK is that
all it says is that has any other type of message _TONES_ and and and
right well what I can do is I can connect us with a member of our
service team and then maybe they can take a look into and set a little
bit of life here for us uh right now they it it does is all uh
interrelated uh yes you know you were in points but the card I know I we
do have a visa rewards number that give you if you ever want to check
how many points he did have or see what you can do with those the two
run shot that down okay it's one eight hundred for one nine here is the
own here is he rock you know it's tried them Tony Pete DuPont holding
for just a brief moment I'll connect us with our service came here my
pleasure and make a row that they see a gun good have a account number
five HP nine nine days three zero account for Angeles and then and found
she said she's having difficulty using her card said never works which
tries to use that and it had an ATM this one or maybe you some questions
after the figure out what the problem might be sure she's a verifiable
vaccination can the salmon per share your patients there I've connected
you with Annika with their service team she's going to Piazza and my
pleasure";

//Below is a good subject
//$Subject = "hello ryan ryan ryan for calling Merrill Lynch my name is
Robert protest may have your name please have rightly its attention to
see Alabama one streak to locate I'm I'm looking to use it is uh hum
Merrill Lynch branched off to work in South Holland for world financial
center well as an apprentice at eight p.m. and I went there to take a
money out of my case I spoke to someone yesterday said I could take I
catch that my money market account because liquid account but that
whenever I I ever try to take a money and what it says can I complete
this chance action that's all it says and then these intelligent kick
out of my check and they said that there's no I know there's no money
that machine that's why so that but and and OK also not know the quick
western ideas that time is linked to my checking account it doesn't give
viewpoints for anything is it wanted well just opened up a separate
account for about you know you get points to it said plane ticket it's
and and and and and OK well and and and it the and and to the OK and
yeah please _TONES_ _TONES_ _TONES_ OK oh and and thank you so much
right there and and _TONES_ _TONES_ _TONES_ thank you for calling
Merrill Lynch this is any guide how math helped heal could hurt for
years the in one minute now comes mean to speak with these authorization
for women to take a look at the it's not very quickly as to whether or
not that's something we need to do and then I can go ahead with
worshipers their side OK great no problem and yes and OK thanks thank
you so much offense and you can";

$Matches = array();
                                        
$MatchCount     = preg_match_all($Pattern, $Subject, $Matches,
PREG_OFFSET_CAPTURE);
echo ($MatchCount);
echo (print_r($Matches, true));

Expected result:
----------------
I expect the "Bad Subject" to complete execution and return an empty
array.

You can comment out the "Bad Subject" and try the "Good Subject" to see
the proper execution of the regex.

NOTE: In the stack trace below I have removed a significant amount of
the repeating traces in the middle.

Actual result:
--------------
Thread 57 - System ID 3896
 
Entry point     msvcrt!_endthreadex+3a     
Create time     12/18/2009 9:48:32 AM      
Time spent in user mode 0 Days 0:0:0.0     
Time spent in kernel mode       0 Days 0:0:0.15  

  
Function        Arg 1   Arg 2   Arg 3   Source     
php5ts!match+6  022bd395        011a3768        022bcf47                   
php5ts!match+578a       022bd395        011a3763        022bcf47                
   
php5ts!match+56ae       022bd395        011a37ca        022bcf47                
   
php5ts!match+6b19       022bd38d        011a37ca        022bcf47                
   
php5ts!match+578a       022bd38d        011a3763        022bcf47                
   
php5ts!match+56ae       022bd38d        011a37ca        022bcf47                
   
php5ts!match+6b19       022bd387        011a37ca        022bcf47                
   
php5ts!match+578a       022bd387        011a3763        022bcf47                
   
php5ts!match+56ae       022bd387        011a37ca        022bcf47                
   
php5ts!match+6b19       022bd382        011a37ca        022bcf47                
   
php5ts!match+578a       022bd382        011a3763        022bcf47                
   
php5ts!match+56ae       022bd382        011a37ca        022bcf47                
   
php5ts!match+6b19       022bd37b        011a37ca        022bcf47                
   
php5ts!match+578a       022bd37b        011a3763        022bcf47                
   
php5ts!match+56ae       022bd37b        011a37ca        022bcf47                
   
php5ts!match+6b19       022bd376        011a37ca        022bcf47                
   
php5ts!match+578a       022bd376        011a3763        022bcf47                
   
php5ts!match+56ae       022bd376        011a37ca        022bcf47                
   
php5ts!match+6b19       022bd372        011a37ca        022bcf47                
   
php5ts!match+578a       022bd372        011a3763        022bcf47                
   
php5ts!match+56ae       022bd372        011a37ca        022bcf47                
   
php5ts!match+6b19       022bd368        011a37ca        022bcf47                
   
php5ts!match+578a       022bd368        011a3763        022bcf47                
   
php5ts!match+56ae       022bd368        011a37ca        022bcf47                
   
php5ts!match+6b19       022bd363        011a37ca        022bcf47                
   
php5ts!match+578a       022bd363        011a3763        022bcf47                
   
php5ts!match+56ae       022bd363        011a37ca        022bcf47                
   
php5ts!match+6b19       022bd35d        011a37ca        022bcf47                
   
php5ts!match+578a       022bd35d        011a3763        022bcf47                
   
php5ts!match+56ae       022bd35d        011a37ca        022bcf47                
   
php5ts!match+6b19       022bd354        011a37ca        022bcf47                
   
~~~~~~MANY REPEATS REMOVED HERE~~~~~~~  ~~~~~~  ~~~~~~  ~~~~~~~            
php5ts!match+6b19       022bcf58        011a37ca        022bcf47                
   
php5ts!match+578a       022bcf58        011a3763        022bcf47                
   
php5ts!match+56ae       022bcf58        011a37ca        022bcf47                
   
php5ts!match+6b19       022bcf52        011a37ca        022bcf47                
   
php5ts!match+578a       022bcf52        011a3763        022bcf47                
   
php5ts!match+56ae       022bcf52        011a37ca        022bcf47                
   
php5ts!match+6b19       022bcf4e        011a37ca        022bcf47                
   
php5ts!match+578a       022bcf4e        011a3763        022bcf47                
   
php5ts!match+56ae       022bcf4e        011a37ca        022bcf47                
   
php5ts!match+6b19       022bcf4a        011a37ca        022bcf47                
   
php5ts!match+578a       022bcf4a        011a3763        022bcf47                
   
php5ts!match+6b19       022bcf47        011a3763        022bcf47                
   
php5ts!match+578a       022bcf47        011a36fe        022bcf47                
   
php5ts!php_pcre_exec+a64        011a3620        0206fa98        022bce48        
           
php5ts!php_pcre_match_impl+250  011a3838        022bce48        00000578        
           
php5ts!php_do_pcre_match+db     00000578        022bd448        00000000        
           
php5ts!zif_preg_match_all+25    00000004        022bd448        00000000        
           
php5ts!zend_do_fcall_common_helper_SPEC+94e     00000000        022f0080        
0111eb18                
  
php5ts!ZEND_DO_FCALL_SPEC_CONST_HANDLER+130     0206fbf8        0111eb18        
0206fe74                
  
php5ts!execute+2fb      022f0080        0111eb00        00000000                
   
php5ts!zend_execute_scripts+f6  00000008        0111eb18        00000000        
           
php5ts!php_execute_script+245   0206fe74        0111eb18        00000005        
           
php5apache2_2!php_handler+5d0   01116b58        0072da80        01116b58        
           
libhttpd!ap_run_handler+21      01116b58        01116b58        01116b58        
           
libhttpd!ap_invoke_handler+ae   00000000        01111b00        0206ff38        
           
libhttpd!ap_die+29e     01116b58        00000000        0072e1d0                
   
libhttpd!ap_get_request_note+1c9c       01111b00        01111b00        
01111b00                   
libhttpd!ap_run_process_connection+21   01111b00        00674e50        
0206ff80                   
libhttpd!ap_process_connection+33       01111b00        0110aad0        
00ec0040                   
libhttpd!ap_regkey_value_remove+c7c     01111af8        00ec0040        
00e80000                   
msvcrt!_endthreadex+a9  011086f8        00ec0040        00e80000                
   
kernel32!BaseThreadStart+37     77c3a341        011086f8        00000000        
         


PHP5TS!MATCH+6In
httpd__PID__4032__Date__12_18_2009__Time_09_49_29AM__241__Second_Chance_Exception_C00000FD.dmp
the assembly instruction at php5ts!match+6 in C:\Program
Files\PHP53\php5ts.dll from The PHP Group has caused a stack overflow
exception (0xC00000FD) when trying to write to memory location
0x02032f2c on thread 57



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


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

Reply via email to