ID:               37239
 Updated by:       [EMAIL PROTECTED]
 Reported By:      dimox at inbox dot lv
-Status:           Open
+Status:           Feedback
 Bug Type:         Reproducible crash
 Operating System: Windows XP Pro SP2
 PHP Version:      4.4.2
 New Comment:

Works perfectly fine on Linux.
Please provide more information.


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

[2006-05-12 20:03:50] beagle-php at sector99 dot com

I have used Dimox's code on a Windows 2000 server running IIS and PHP
4.4.2 and have reproduced the problem. The regular expression commands
on this server combination seem to be susceptible to crashing like
this.

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

[2006-05-02 11:03:31] dimox at inbox dot lv

Can I get trial version of MSVC6? If it exist, can you add link for me?
I'm only web-programmer and I has no tools for C++
development/debugging. 

Maybe you can run file test_bug.php on your oun PC with this tools and
generate this debug backtrace?
------------
test_bug.php
------------ 
<?php
$text = '<block name="name1">
  something
    <block name="name2">1223567890 qwertyuiop[[[]asdfghjkl;rrrr
\zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;rrrr \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890123456789012345678901234567890
<blockend>
<blockend>';

$regex='/\<block\s*name=\"([^\"]+)\"\s*\>((.(?!\<block\s))+?)\<blockend\>/is';

while(preg_match_all($regex, $text, $block_matches,PREG_SET_ORDER)){
  foreach($block_matches AS $block)
        echo '<pre>'; print_r($block_matches);
  $text = preg_replace($regex, '', $text);
}
?>

This file causes 100% crash on my Win32 server. I realy want to help
PHP better.

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

[2006-04-29 01:42:06] [EMAIL PROTECTED]

Thank you for this bug report. To properly diagnose the problem, we
need a backtrace to see what is happening behind the scenes. To
find out how to generate a backtrace, please read
http://bugs.php.net/bugs-generating-backtrace.php for *NIX and
http://bugs.php.net/bugs-generating-backtrace-win32.php for Win32

Once you have generated a backtrace, please submit it to this bug
report and change the status back to "Open". Thank you for helping
us make PHP better.



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

[2006-04-28 19:58:03] dimox at inbox dot lv

While i symlificate the code i forgot to remove \%\> from example and
posted text for parsig was too small to cause error. I found, that
block content must be more tan 1330-1360 simbols to couse script crash
- until this values it works fine! I increased all "memory size" values
in php.ini and in the code, but problem still exist. 

Changed code:

$text = '<block name="name1">
  something
    <block name="name2">1223567890 qwertyuiop[[[]asdfghjkl;’’’’
\zxcvbnm,./zxcvbnmm, xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;’’’’ \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;’’’’ \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;’’’’ \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;’’’’ \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;’’’’ \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;’’’’ \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;’’’’ \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;’’’’ \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;’’’’ \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;’’’’ \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;’’’’ \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1223567890 qwertyuiop[[[]asdfghjkl;’’’’ \zxcvbnm,./zxcvbnmm,
xsxasxaxaxae dsvvzs vsv  bdbdb<> <>><<<
1234567890123456789012345678901234567890123456789012345678901
<blockend>
<blockend>';

$regex
='/\<block\s*name=\"([^\"]+)\"\s*\>((.(?!\<block\s))+?)\<blockend\>/is';

while(preg_match_all($regex, $text, $block_matches,PREG_SET_ORDER)){
  ...
  $text = preg_replace($regex, '', $text);
}

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

[2006-04-28 18:41:53] dimox at inbox dot lv

Description:
------------
Regxp couses PHP script crach on Windows. On Linux Server it works
fine, but I use Windows server on my PC for development. 
I try this code on my own PC with Apache/1.3.34 (Win32) PHP/4.4.2 and
on another PC with Apache/1.3.34 (Win32) PHP/4.4.1. On my PC this code
souses Apache crash, but on another PC this code couses only script
crash. I looking information about this bug anywere, but can't find
anything useful, except http://bugs.php.net/bug.php?id=27735. I try
with logs disconnection, but it doesn't change anything. 
Help ...

Reproduce code:
---------------
$regex =
'/block\s*name=\"([^\"]+)\"\s*\%\>((.(?!(block\s)))+?)\blockend/is';
while(preg_match_all($regex, $text, $block_matches, PREG_SET_ORDER)){
...
}

Expected result:
----------------
$block_matches array with results of regular expression matches. I need
in this to parse blocks like 

block name="name1"
  something
    block name="name2"
      something else
      ...
    blockend
blockend

Actual result:
--------------
"Server not found" or "The page cannot be displayed" in browser. 
After simplification of code to:
 
$regex = '/block\s*name=\"([^\"]+)\"\s*\%\>(.+?)\blockend/is';
while(preg_match_all($regex, $text, $block_matches, PREG_SET_ORDER)){
...
}

all works fine(remooved lookahead assertion). If i add () around the
'.' - script crash again.

$regex = '/block\s*name=\"([^\"]+)\"\s*\%\>((.)+?)\blockend/is';


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


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

Reply via email to