Closes PECL #5944; binding an invalid parameter can lead to segfaults.

Modified patch provided by curt@php.net.
This commit is contained in:
Wez Furlong 2005-11-16 06:32:33 +00:00
parent c95360658f
commit 0bd9518f8c

View File

@ -328,7 +328,17 @@ static int really_register_bound_param(struct pdo_bound_param_data *param, pdo_s
/* 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;