Newsgroups: php.internals Path: news.php.net Xref: news.php.net php.internals:40864 Return-Path: Mailing-List: contact internals-help@lists.php.net; run by ezmlm Delivered-To: mailing list internals@lists.php.net Received: (qmail 10164 invoked from network); 6 Oct 2008 15:45:30 -0000 Received: from unknown (HELO lists.php.net) (127.0.0.1) by localhost with SMTP; 6 Oct 2008 15:45:30 -0000 Received: from [127.0.0.1] ([127.0.0.1:29384]) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ECSTREAM id E5/99-48736-A923AE84 for ; Mon, 06 Oct 2008 11:45:30 -0400 X-Host-Fingerprint: 129.93.39.17 nmc-macpro-tim.unl.edu Received: from [129.93.39.17] ([129.93.39.17:2030] helo=localhost.localdomain) by pb1.pair.com (ecelerity 2.1.1.9-wez r(12769M)) with ESMTP id DF/F8-48736-5513AE84 for ; Mon, 06 Oct 2008 11:40:06 -0400 Message-ID: To: internals@lists.php.net Date: Mon, 06 Oct 2008 10:40:02 -0500 User-Agent: Thunderbird 2.0.0.17 (Macintosh/20080914) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="------------070408060207050704090905" X-Posted-By: 129.93.39.17 Subject: [PATCH] Bug #44251 From: tsteiner@nerdclub.net (Tim Steiner) --------------070408060207050704090905 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Greetings, I have created a patch for Bug #44251 (Question mark and an escaped singel quote lead to an exception). The issue was introduced by the fix for Bug #36798 (mysql error when using named parameters in a query with high ascii). That fix ended up removing code that would ignore escaped quotes inside of quoted text. Instead, the parser would treat any escaped quotes as the end of the quoted string. Therefore, if you have an escaped quote followed by a question mark, the parse thinks the question mark is a placeholder. My patch updates the regular expressions used for finding quoted strings to properly ignore escaped quotes. It also seems to handle the test case from Bug #36798 correctly. This is my first patch submission, so I have some questions: The patch is against 5.2.6. Should it be against a different version? I had to alter a .re file and a regenerated the .c file with re2c 0.13.5. Should I use a different version and if so where can I get it? Should I even be submitting the updated .c file? Thanks! Tim Steiner --------------070408060207050704090905 Content-Type: text/plain; x-mac-type="0"; x-mac-creator="0"; name="php-5.2.6-pdo_escaped_quotes.patch" Content-Transfer-Encoding: base64 Content-Disposition: inline; filename="php-5.2.6-pdo_escaped_quotes.patch" LS0tIHBocC01LjIuNi9leHQvcGRvL3Bkb19zcWxfcGFyc2VyLnJlCTIwMDctMTItMzEgMDE6 MTc6NDAuMDAwMDAwMDAwIC0wNjAwCisrKyBwaHAtNS4yLjYuZml4ZWQvZXh0L3Bkby9wZG9f c3FsX3BhcnNlci5yZQkyMDA4LTA5LTA4IDExOjA2OjM5LjAwMDAwMDAwMCAtMDUwMApAQCAt NTUsOCArNTUsOCBAQAogCSovCiAKIAkvKiFyZTJjCi0JCShbIl0gKFteIl0pKiBbIl0pCQl7 IFJFVChQRE9fUEFSU0VSX1RFWFQpOyB9Ci0JCShbJ10gKFteJ10pKiBbJ10pCQl7IFJFVChQ RE9fUEFSU0VSX1RFWFQpOyB9CisJCShbIl0oKFtcXF1BTllOT0VPRil8QU5ZTk9FT0ZcWyJc XF0pKlsiXSkgeyBSRVQoUERPX1BBUlNFUl9URVhUKTsgfQorCQkoWyddKChbXFxdQU5ZTk9F T0YpfEFOWU5PRU9GXFsnXFxdKSpbJ10pIHsgUkVUKFBET19QQVJTRVJfVEVYVCk7IH0KIAkJ TVVMVElDSEFSezIsfQkJCQkJCQl7IFJFVChQRE9fUEFSU0VSX1RFWFQpOyB9CgkJQklORENI UgkJCQkJCXsgUkVUKFBET19QQVJTRVJfQklORCk7IH0KIAkJUVVFU1RJT04JCQkJCQkJCXsg UkVUKFBET19QQVJTRVJfQklORF9QT1MpOyB9Ci0tLSBwaHAtNS4yLjYvZXh0L3Bkby9wZG9f c3FsX3BhcnNlci5jCTIwMDgtMDQtMzAgMTM6Mzc6NDAuMDAwMDAwMDAwIC0wNTAwCisrKyBw aHAtNS4yLjYuZml4ZWQvZXh0L3Bkby9wZG9fc3FsX3BhcnNlci5jCTIwMDgtMDktMDggMTE6 MDY6NDMuMDAwMDAwMDAwIC0wNTAwCkBAIC0xLDQgKzEsNSBAQAotLyogR2VuZXJhdGVkIGJ5 IHJlMmMgMC4xMS4wIG9uIE1vbiBOb3YgMjYgMTY6MTA6MjggMjAwNyAqLworLyogR2VuZXJh dGVkIGJ5IHJlMmMgMC4xMy41IG9uIE1vbiBTZXAgIDggMTE6MDY6NDMgMjAwOCAqLworI2xp bmUgMSAiZXh0L3Bkby9wZG9fc3FsX3BhcnNlci5yZSIKIC8qCiAgICstLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKwogICB8IFBIUCBWZXJzaW9uIDUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHwKQEAgLTE3LDcgKzE4LDcgQEAKICAgKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0rCiAqLwogCi0vKiAkSWQ6IHBkb19zcWxfcGFyc2VyLmMsdiAxLjM1LjIu Ni4yLjE1IDIwMDcvMTIvMzEgMDc6MjA6MDkgc2ViYXN0aWFuIEV4cCAkICovCisvKiAkSWQ6 IHBkb19zcWxfcGFyc2VyLnJlLHYgMS4yOC4yLjQuMi4xMiAyMDA3LzEyLzMxIDA3OjE3OjQw IHNlYmFzdGlhbiBFeHAgJCAqLwogCiAjaW5jbHVkZSAicGhwLmgiCiAjaW5jbHVkZSAicGhw X3Bkb19kcml2ZXIuaCIKQEAgLTQ2LDE1ICs0NywxNyBAQAogCWNoYXIgKmN1cnNvciA9IHMt PmN1cjsKIAogCXMtPnRvayA9IGN1cnNvcjsKKwkjbGluZSA1NSAiZXh0L3Bkby9wZG9fc3Fs X3BhcnNlci5yZSIKIAogCiAJCisjbGluZSA1NSAiZXh0L3Bkby9wZG9fc3FsX3BhcnNlci5j IgogewogCVlZQ1RZUEUgeXljaDsKIAotCWlmKChZWUxJTUlUIC0gWVlDVVJTT1IpIDwgMikg WVlGSUxMKDIpOworCWlmICgoWVlMSU1JVCAtIFlZQ1VSU09SKSA8IDIpIFlZRklMTCgyKTsK IAl5eWNoID0gKllZQ1VSU09SOwotCXN3aXRjaCh5eWNoKSB7CisJc3dpdGNoICh5eWNoKSB7 CiAJY2FzZSAweDAwOglnb3RvIHl5MTE7CiAJY2FzZSAnIic6CWdvdG8geXkyOwogCWNhc2Ug J1wnJzoJZ290byB5eTQ7CkBAIC02MywxNiArNjYsMTkgQEAKIAlkZWZhdWx0Oglnb3RvIHl5 ODsKIAl9CiB5eTI6Ci0JeXljaCA9ICorK1lZQ1VSU09SOwotCWdvdG8geXkyNDsKKwl5eWNo ID0gKihZWU1BUktFUiA9ICsrWVlDVVJTT1IpOworCWlmICh5eWNoID49IDB4MDEpIGdvdG8g eXkyNjsKIHl5MzoKKyNsaW5lIDYzICJleHQvcGRvL3Bkb19zcWxfcGFyc2VyLnJlIgogCXsg U0tJUF9PTkUoUERPX1BBUlNFUl9URVhUKTsgfQorI2xpbmUgNzUgImV4dC9wZG8vcGRvX3Nx bF9wYXJzZXIuYyIKIHl5NDoKLQl5eWNoID0gKisrWVlDVVJTT1I7CisJeXljaCA9ICooWVlN QVJLRVIgPSArK1lZQ1VSU09SKTsKKwlpZiAoeXljaCA8PSAweDAwKSBnb3RvIHl5MzsKIAln b3RvIHl5MjA7CiB5eTU6CiAJeXljaCA9ICorK1lZQ1VSU09SOwotCXN3aXRjaCh5eWNoKSB7 CisJc3dpdGNoICh5eWNoKSB7CiAJY2FzZSAnMCc6CiAJY2FzZSAnMSc6CiAJY2FzZSAnMic6 CkBAIC0xNDIsMTggKzE0OCwyMCBAQAogCX0KIHl5NjoKIAkrK1lZQ1VSU09SOwotCXN3aXRj aCgoeXljaCA9ICpZWUNVUlNPUikpIHsKKwlzd2l0Y2ggKCh5eWNoID0gKllZQ1VSU09SKSkg ewogCWNhc2UgJzonOgogCWNhc2UgJz8nOglnb3RvIHl5MTM7CiAJZGVmYXVsdDoJZ290byB5 eTc7CiAJfQogeXk3OgorI2xpbmUgNjIgImV4dC9wZG8vcGRvX3NxbF9wYXJzZXIucmUiCiAJ eyBSRVQoUERPX1BBUlNFUl9CSU5EX1BPUyk7IH0KKyNsaW5lIDE2MCAiZXh0L3Bkby9wZG9f c3FsX3BhcnNlci5jIgogeXk4OgogCSsrWVlDVVJTT1I7Ci0JaWYoWVlMSU1JVCA9PSBZWUNV UlNPUikgWVlGSUxMKDEpOworCWlmIChZWUxJTUlUIDw9IFlZQ1VSU09SKSBZWUZJTEwoMSk7 CiAJeXljaCA9ICpZWUNVUlNPUjsKLQlzd2l0Y2goeXljaCkgeworCXN3aXRjaCAoeXljaCkg ewogCWNhc2UgMHgwMDoKIAljYXNlICciJzoKIAljYXNlICdcJyc6CkBAIC0xNjIsMjYgKzE3 MCwzMiBAQAogCWRlZmF1bHQ6CWdvdG8geXk4OwogCX0KIHl5MTA6CisjbGluZSA2NCAiZXh0 L3Bkby9wZG9fc3FsX3BhcnNlci5yZSIKIAl7IFJFVChQRE9fUEFSU0VSX1RFWFQpOyB9Cisj bGluZSAxNzYgImV4dC9wZG8vcGRvX3NxbF9wYXJzZXIuYyIKIHl5MTE6CiAJKytZWUNVUlNP UjsKKyNsaW5lIDY1ICJleHQvcGRvL3Bkb19zcWxfcGFyc2VyLnJlIgogCXsgUkVUKFBET19Q QVJTRVJfRU9JKTsgfQorI2xpbmUgMTgxICJleHQvcGRvL3Bkb19zcWxfcGFyc2VyLmMiCiB5 eTEzOgogCSsrWVlDVVJTT1I7Ci0JaWYoWVlMSU1JVCA9PSBZWUNVUlNPUikgWVlGSUxMKDEp OworCWlmIChZWUxJTUlUIDw9IFlZQ1VSU09SKSBZWUZJTEwoMSk7CiAJeXljaCA9ICpZWUNV UlNPUjsKLQlzd2l0Y2goeXljaCkgeworCXN3aXRjaCAoeXljaCkgewogCWNhc2UgJzonOgog CWNhc2UgJz8nOglnb3RvIHl5MTM7CiAJZGVmYXVsdDoJZ290byB5eTE1OwogCX0KIHl5MTU6 CisjbGluZSA2MCAiZXh0L3Bkby9wZG9fc3FsX3BhcnNlci5yZSIKIAl7IFJFVChQRE9fUEFS U0VSX1RFWFQpOyB9CisjbGluZSAxOTQgImV4dC9wZG8vcGRvX3NxbF9wYXJzZXIuYyIKIHl5 MTY6CiAJKytZWUNVUlNPUjsKLQlpZihZWUxJTUlUID09IFlZQ1VSU09SKSBZWUZJTEwoMSk7 CisJaWYgKFlZTElNSVQgPD0gWVlDVVJTT1IpIFlZRklMTCgxKTsKIAl5eWNoID0gKllZQ1VS U09SOwotCXN3aXRjaCh5eWNoKSB7CisJc3dpdGNoICh5eWNoKSB7CiAJY2FzZSAnMCc6CiAJ Y2FzZSAnMSc6CiAJY2FzZSAnMic6CkBAIC0yNDgsMzIgKzI2Miw1OCBAQAogCWRlZmF1bHQ6 CWdvdG8geXkxODsKIAl9CiB5eTE4OgorI2xpbmUgNjEgImV4dC9wZG8vcGRvX3NxbF9wYXJz ZXIucmUiCiAJeyBSRVQoUERPX1BBUlNFUl9CSU5EKTsgfQorI2xpbmUgMjY4ICJleHQvcGRv L3Bkb19zcWxfcGFyc2VyLmMiCiB5eTE5OgogCSsrWVlDVVJTT1I7Ci0JaWYoWVlMSU1JVCA9 PSBZWUNVUlNPUikgWVlGSUxMKDEpOworCWlmIChZWUxJTUlUIDw9IFlZQ1VSU09SKSBZWUZJ TEwoMSk7CiAJeXljaCA9ICpZWUNVUlNPUjsKIHl5MjA6Ci0Jc3dpdGNoKHl5Y2gpIHsKLQlj YXNlICdcJyc6CWdvdG8geXkyMTsKKwlzd2l0Y2ggKHl5Y2gpIHsKKwljYXNlIDB4MDA6CWdv dG8geXkyMTsKKwljYXNlICdcJyc6CWdvdG8geXkyMzsKKwljYXNlICdcXCc6CWdvdG8geXky MjsKIAlkZWZhdWx0Oglnb3RvIHl5MTk7CiAJfQogeXkyMToKKwlZWUNVUlNPUiA9IFlZTUFS S0VSOworCWdvdG8geXkzOworeXkyMjoKIAkrK1lZQ1VSU09SOwotCXsgUkVUKFBET19QQVJT RVJfVEVYVCk7IH0KKwlpZiAoWVlMSU1JVCA8PSBZWUNVUlNPUikgWVlGSUxMKDEpOworCXl5 Y2ggPSAqWVlDVVJTT1I7CisJaWYgKHl5Y2ggPD0gMHgwMCkgZ290byB5eTIxOworCWdvdG8g eXkxOTsKIHl5MjM6CiAJKytZWUNVUlNPUjsKLQlpZihZWUxJTUlUID09IFlZQ1VSU09SKSBZ WUZJTEwoMSk7CisjbGluZSA1OSAiZXh0L3Bkby9wZG9fc3FsX3BhcnNlci5yZSIKKwl7IFJF VChQRE9fUEFSU0VSX1RFWFQpOyB9CisjbGluZSAyOTMgImV4dC9wZG8vcGRvX3NxbF9wYXJz ZXIuYyIKK3l5MjU6CisJKytZWUNVUlNPUjsKKwlpZiAoWVlMSU1JVCA8PSBZWUNVUlNPUikg WVlGSUxMKDEpOwogCXl5Y2ggPSAqWVlDVVJTT1I7Ci15eTI0OgotCXN3aXRjaCh5eWNoKSB7 Ci0JY2FzZSAnIic6CWdvdG8geXkyNTsKLQlkZWZhdWx0Oglnb3RvIHl5MjM7Cit5eTI2Ogor CXN3aXRjaCAoeXljaCkgeworCWNhc2UgMHgwMDoJZ290byB5eTIxOworCWNhc2UgJyInOgln b3RvIHl5Mjg7CisJY2FzZSAnXFwnOglnb3RvIHl5Mjc7CisJZGVmYXVsdDoJZ290byB5eTI1 OwogCX0KLXl5MjU6Cit5eTI3OgorCSsrWVlDVVJTT1I7CisJaWYgKFlZTElNSVQgPD0gWVlD VVJTT1IpIFlZRklMTCgxKTsKKwl5eWNoID0gKllZQ1VSU09SOworCWlmICh5eWNoIDw9IDB4 MDApIGdvdG8geXkyMTsKKwlnb3RvIHl5MjU7Cit5eTI4OgogCSsrWVlDVVJTT1I7CisjbGlu ZSA1OCAiZXh0L3Bkby9wZG9fc3FsX3BhcnNlci5yZSIKIAl7IFJFVChQRE9fUEFSU0VSX1RF WFQpOyB9CisjbGluZSAzMTUgImV4dC9wZG8vcGRvX3NxbF9wYXJzZXIuYyIKIH0KKyNsaW5l IDY2ICJleHQvcGRvL3Bkb19zcWxfcGFyc2VyLnJlIgogCQogfQogCg== --------------070408060207050704090905--