]> granicus.if.org Git - php/commitdiff
fix a segfault with the following script:
authorAndrey Hristov <andrey@php.net>
Mon, 11 Jul 2005 14:14:56 +0000 (14:14 +0000)
committerAndrey Hristov <andrey@php.net>
Mon, 11 Jul 2005 14:14:56 +0000 (14:14 +0000)
<?php
$dbh = new PDO('mysql:dbname=test;host=localhost', "root", "secret");
$what = 1;
$stmt = $dbh->prepare('select a, b, c from t123 where a=:what');
$stmt->bindParam(1, $what, PDO_PARAM_INT, 12);
var_dump($stmt->execute());
var_dump($stmt->fetchObject());
?>

ext/pdo/pdo_stmt.c

index c6e4b481a5b124419426d37412c39a15e02e09b7..830e0525424ad5e4a2239fa4f6348a4ed9255143 100755 (executable)
@@ -91,7 +91,10 @@ static inline int rewrite_name_to_position(pdo_stmt_t *stmt, struct pdo_bound_pa
                        /* this is not an error here */
                        return 1;
                }
-
+               if (!param->name) {
+                       return 1;
+               }
+    
                zend_hash_internal_pointer_reset(stmt->bound_param_map);
                while (SUCCESS == zend_hash_get_current_data(stmt->bound_param_map, (void**)&name)) {
                        if (strcmp(name, param->name)) {