felipe Mon Nov 3 15:31:51 2008 UTC Added files: /php-src/ext/pdo_mysql/tests bug44327.phpt
Modified files: /php-src/ext/pdo pdo_stmt.c Log: - Fixed bug #44327 (PDORow::queryString property & numeric offsets / Crash) http://cvs.php.net/viewvc.cgi/php-src/ext/pdo/pdo_stmt.c?r1=1.204&r2=1.205&diff_format=u Index: php-src/ext/pdo/pdo_stmt.c diff -u php-src/ext/pdo/pdo_stmt.c:1.204 php-src/ext/pdo/pdo_stmt.c:1.205 --- php-src/ext/pdo/pdo_stmt.c:1.204 Sun Nov 2 21:10:10 2008 +++ php-src/ext/pdo/pdo_stmt.c Mon Nov 3 15:31:51 2008 @@ -18,7 +18,7 @@ +----------------------------------------------------------------------+ */ -/* $Id: pdo_stmt.c,v 1.204 2008/11/02 21:10:10 felipe Exp $ */ +/* $Id: pdo_stmt.c,v 1.205 2008/11/03 15:31:51 felipe Exp $ */ /* The PDO Statement Handle Class */ @@ -2622,6 +2622,10 @@ pdo_stmt_t * stmt = (pdo_stmt_t *) zend_object_store_get_object(object TSRMLS_CC); int colno = -1; + if ((Z_TYPE_P(member) == IS_STRING || Z_TYPE_P(member) == IS_UNICODE) && + memcmp(Z_UNIVAL_P(member).v, "queryString", sizeof("queryString")-1)) { + return std_object_handlers.read_property(object, member, IS_STRING TSRMLS_CC); + } MAKE_STD_ZVAL(return_value); if (Z_TYPE_P(member) == IS_LONG) { http://cvs.php.net/viewvc.cgi/php-src/ext/pdo_mysql/tests/bug44327.phpt?view=markup&rev=1.1 Index: php-src/ext/pdo_mysql/tests/bug44327.phpt +++ php-src/ext/pdo_mysql/tests/bug44327.phpt --TEST-- Bug #44327 (PDORow::queryString property & numeric offsets / Crash) --SKIPIF-- <?php require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'skipif.inc'); require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc'); MySQLPDOTest::skip(); $db = MySQLPDOTest::factory(); ?> --FILE-- <?php require_once(dirname(__FILE__) . DIRECTORY_SEPARATOR . 'mysql_pdo_test.inc'); $db = MySQLPDOTest::factory(); $stmt = $db->prepare("SELECT 1 AS \"one\""); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_LAZY); var_dump($row); var_dump($row->{0}); var_dump($row->one); var_dump($row->queryString); print "----------------------------------\n"; @$db->exec("DROP TABLE test"); $db->exec("CREATE TABLE test (id INT)"); $db->exec("INSERT INTO test(id) VALUES (1)"); $stmt = $db->prepare("SELECT id FROM test"); $stmt->execute(); $row = $stmt->fetch(PDO::FETCH_LAZY); var_dump($row); var_dump($row->queryString); @$db->exec("DROP TABLE test"); print "----------------------------------\n"; $stmt = $db->prepare('foo'); @$stmt->execute(); $row = $stmt->fetch(); var_dump($row->queryString); ?> --EXPECTF-- object(PDORow)#%d (2) { ["queryString"]=> string(17) "SELECT 1 AS "one"" ["one"]=> string(1) "1" } string(1) "1" string(1) "1" string(17) "SELECT 1 AS "one"" ---------------------------------- object(PDORow)#%d (2) { ["queryString"]=> string(19) "SELECT id FROM test" ["id"]=> string(1) "1" } string(19) "SELECT id FROM test" ---------------------------------- Notice: Trying to get property of non-object in %s on line %d NULL -- PHP CVS Mailing List (http://www.php.net/) To unsubscribe, visit: http://www.php.net/unsub.php