#26927 [NEW]: preg_quote and/or preg_match disrespect embedded null chars in strings

From: Date: Fri, 16 Jan 2004 00:45:36 +0000
Subject: #26927 [NEW]: preg_quote and/or preg_match disrespect embedded null chars in strings
Groups: php.bugs 
Request: Send a blank email to php-bugs+get-53403@lists.php.net to get a copy of this message
From: ikindred at cox dot net Operating system: FreeBSD 4.9 PHP version: 4.3.4 PHP Bug Type: PCRE related Bug description: preg_quote and/or preg_match disrespect embedded null chars in strings Description: ------------ At first glance, either or both of the following are bugs: 1. preg_quote does not properly escape the null character (\000). 2. preg_match chokes on patterns containing unescaped null characters. I personally want to think that preg_match should be able to handle patterns containing null characters. However, according to Bug #16590, preg_match's behavior is a feature and not a bug - oh well. (I also recognize that there may be legitimate performance reasons for disallowing null chars in patterns.) I therefore claim that preg_quote is buggy should be fixed. Please note that: (a) preg_quote ("a\000b") returns "a\000b", so it is not like preg_quote is treating the \000 as an end-of-string character (which would result in "a" being returned). preg_quote is just passing the \000 through without escaping it. (b) As far as I can tell, there is no "preg_quote" function in the PCRE library (specifically, there is no function with "quote" as part of its name). So, as far as I can tell, PHP cannot blame the PCRE for preg_quote's buggy behavior. Many thanks! Reproduce code: --------------- <?php $pattern = "/". preg_quote ("a\000b"). "/"; print "preg_match: ". preg_match ($pattern, "a\000b"). "\n"; ?> Expected result: ---------------- preg_match: 1 Actual result: -------------- Warning: No ending delimiter '/' found in /<path>/test.php on line 4 preg_match: -- Edit bug report at http://bugs.php.net/?id=26927&edit=1 -- Try a CVS snapshot (php4): http://bugs.php.net/fix.php?id=26927&r=trysnapshot4 Try a CVS snapshot (php5): http://bugs.php.net/fix.php?id=26927&r=trysnapshot5 Fixed in CVS: http://bugs.php.net/fix.php?id=26927&r=fixedcvs Fixed in release: http://bugs.php.net/fix.php?id=26927&r=alreadyfixed Need backtrace: http://bugs.php.net/fix.php?id=26927&r=needtrace Need Reproduce Script: http://bugs.php.net/fix.php?id=26927&r=needscript Try newer version: http://bugs.php.net/fix.php?id=26927&r=oldversion Not developer issue: http://bugs.php.net/fix.php?id=26927&r=support Expected behavior: http://bugs.php.net/fix.php?id=26927&r=notwrong Not enough info: http://bugs.php.net/fix.php?id=26927&r=notenoughinfo Submitted twice: http://bugs.php.net/fix.php?id=26927&r=submittedtwice register_globals: http://bugs.php.net/fix.php?id=26927&r=globals PHP 3 support discontinued: http://bugs.php.net/fix.php?id=26927&r=php3 Daylight Savings: http://bugs.php.net/fix.php?id=26927&r=dst IIS Stability: http://bugs.php.net/fix.php?id=26927&r=isapi Install GNU Sed: http://bugs.php.net/fix.php?id=26927&r=gnused Floating point limitations: http://bugs.php.net/fix.php?id=26927&r=float

« previous php.bugs (#53403) next »