wez             Wed Nov 16 01:32:36 2005 EDT

  Modified files:              (Branch: PHP_5_1)
    /php-src/ext/pdo    pdo_stmt.c 
  Log:
  Closes PECL #5944; binding an invalid parameter can lead to segfaults.
  Modified patch provided by [EMAIL PROTECTED]
  
  
http://cvs.php.net/diff.php/php-src/ext/pdo/pdo_stmt.c?r1=1.118.2.16&r2=1.118.2.17&ty=u
Index: php-src/ext/pdo/pdo_stmt.c
diff -u php-src/ext/pdo/pdo_stmt.c:1.118.2.16 
php-src/ext/pdo/pdo_stmt.c:1.118.2.17
--- php-src/ext/pdo/pdo_stmt.c:1.118.2.16       Mon Nov  7 11:53:12 2005
+++ php-src/ext/pdo/pdo_stmt.c  Wed Nov 16 01:32:33 2005
@@ -18,7 +18,7 @@
   +----------------------------------------------------------------------+
 */
 
-/* $Id: pdo_stmt.c,v 1.118.2.16 2005/11/07 16:53:12 iliaa Exp $ */
+/* $Id: pdo_stmt.c,v 1.118.2.17 2005/11/16 06:32:33 wez Exp $ */
 
 /* The PDO Statement Handle Class */
 
@@ -328,7 +328,17 @@
        
        /* tell the driver we just created a parameter */
        if (stmt->methods->param_hook) {
-               return stmt->methods->param_hook(stmt, pparam, 
PDO_PARAM_EVT_ALLOC TSRMLS_CC);
+               if (!stmt->methods->param_hook(stmt, pparam,
+                               PDO_PARAM_EVT_ALLOC TSRMLS_CC)) {
+                       /* driver indicates that the parameter doesn't exist.
+                        * remove it from our hash */
+                       if (pparam->name) {
+                               zend_hash_del(hash, pparam->name, 
pparam->namelen);
+                       } else {
+                               zend_hash_index_del(hash, pparam->paramno);
+                       }
+                       return 0;
+               }
        }
 
        return 1;

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to