]> granicus.if.org Git - php/commitdiff
Fixed bug #42978 (mismatch between number of bound params and values causes
authorIlia Alshanetsky <iliaa@php.net>
Tue, 20 Nov 2007 14:22:27 +0000 (14:22 +0000)
committerIlia Alshanetsky <iliaa@php.net>
Tue, 20 Nov 2007 14:22:27 +0000 (14:22 +0000)
a crash in pdo_pgsql)

ext/pdo/pdo_stmt.c

index 35f3232c20d928c7b39964c067211dc749150bd5..d43a0e443c6d18671e05a23a0ee067d303215b1b 100755 (executable)
@@ -168,6 +168,11 @@ static int dispatch_param_event(pdo_stmt_t *stmt, enum pdo_param_event event_typ
 
 iterate:
        if (ht) {
+               if (zend_hash_num_elements(stmt->bound_param_map) != zend_hash_num_elements(ht)) {
+                       php_error_docref(NULL TSRMLS_CC, E_WARNING, "Number of bound paramters %d does not match number of bound values %d", zend_hash_num_elements(stmt->bound_param_map), zend_hash_num_elements(ht));
+                       return 0;       
+               }
+
                zend_hash_internal_pointer_reset(ht);
                while (SUCCESS == zend_hash_get_current_data(ht, (void**)&param)) {
                        if (!stmt->methods->param_hook(stmt, param, event_type TSRMLS_CC)) {