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

Reply via email to