#41125 [Opn->Fbk]: PDO mysql + quote() + prepare() can result in seg fault

From: Date: Tue, 17 Apr 2007 20:36:46 +0000
Subject: #41125 [Opn->Fbk]: PDO mysql + quote() + prepare() can result in seg fault
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-111619@lists.php.net to get a copy of this message
ID: 41125 Updated by: tony2001@php.net Reported By: ed at bronto dot com -Status: Open +Status: Feedback Bug Type: PDO related Operating System: Centos PHP Version: 5.2.1 New Comment: 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. Previous Comments: ------------------------------------------------------------------------ [2007-04-17 20:34:45] ed at bronto dot com 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: -------------- [ed@a_machine]$ php test.php here Segmentation fault ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/?id=41125&edit=1

« previous php.bugs (#111619) next »