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