From: ed at bronto dot com
Operating system: Centos
PHP version: 5.2.1
PHP Bug Type: PDO related
Bug description: PDO mysql + quote() + prepare() can result in seg fault
Description:
------------
Using PDO->quote on a portion of a query to be prepared will result in a
seg fault if:
- there is a bound parameter after the quoted value
- emulated prepares is on (1)
- mysql
If emulated prepares is off (0), the query fails. This should also be
considered a bug.
Reproduce code:
---------------
//test.php
//the mysql table first: create table ed (id int not null, name
varchar(255) not null);
$db = new PDO('mysql:host=' . HOST . ';dbname=' . NAME, USERNAME,
PASSWORD);
$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, 1);
$search = "o'riley";
$values = array();
$sql = "select id from ed where name like " . $db->quote('%' . $search .
'%');
$sth = $db->prepare($sql);
$sth->execute($values);
echo("here\n");
$values = array('id' => 1233434);
$sql = "select id from ed where name like " . $db->quote('%' . $search .
'%') . " and id = :id";
$sth = $db->prepare($sql);
$sth->execute($values);
echo("there\n");
Expected result:
----------------
No errors should occur.
Should print "here\nthere\n".
Actual result:
--------------
[EMAIL PROTECTED] php test.php
here
Segmentation fault
--
Edit bug report at http://bugs.php.net/?id=41125&edit=1
--
Try a CVS snapshot (PHP 4.4):
http://bugs.php.net/fix.php?id=41125&r=trysnapshot44
Try a CVS snapshot (PHP 5.2):
http://bugs.php.net/fix.php?id=41125&r=trysnapshot52
Try a CVS snapshot (PHP 6.0):
http://bugs.php.net/fix.php?id=41125&r=trysnapshot60
Fixed in CVS: http://bugs.php.net/fix.php?id=41125&r=fixedcvs
Fixed in release:
http://bugs.php.net/fix.php?id=41125&r=alreadyfixed
Need backtrace: http://bugs.php.net/fix.php?id=41125&r=needtrace
Need Reproduce Script: http://bugs.php.net/fix.php?id=41125&r=needscript
Try newer version: http://bugs.php.net/fix.php?id=41125&r=oldversion
Not developer issue: http://bugs.php.net/fix.php?id=41125&r=support
Expected behavior: http://bugs.php.net/fix.php?id=41125&r=notwrong
Not enough info:
http://bugs.php.net/fix.php?id=41125&r=notenoughinfo
Submitted twice:
http://bugs.php.net/fix.php?id=41125&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=41125&r=globals
PHP 3 support discontinued: http://bugs.php.net/fix.php?id=41125&r=php3
Daylight Savings: http://bugs.php.net/fix.php?id=41125&r=dst
IIS Stability: http://bugs.php.net/fix.php?id=41125&r=isapi
Install GNU Sed: http://bugs.php.net/fix.php?id=41125&r=gnused
Floating point limitations: http://bugs.php.net/fix.php?id=41125&r=float
No Zend Extensions: http://bugs.php.net/fix.php?id=41125&r=nozend
MySQL Configuration Error: http://bugs.php.net/fix.php?id=41125&r=mysqlcfg