]> granicus.if.org Git - php/commitdiff
fix possible invalid read
authorAntony Dovgal <tony2001@php.net>
Wed, 3 Dec 2008 10:11:04 +0000 (10:11 +0000)
committerAntony Dovgal <tony2001@php.net>
Wed, 3 Dec 2008 10:11:04 +0000 (10:11 +0000)
ext/pdo/pdo_stmt.c

index 79ef39828e4d6b18b20e464b73422b31e0d9a1f1..2dc02d22333c4aba5f52ff71c99e3837c7aa31e9 100755 (executable)
@@ -2202,11 +2202,15 @@ static PHP_METHOD(PDOStatement, debugDumpParams)
                        zstr str;
                        uint len;
                        ulong num;
+                       int res;
 
-                       if (zend_hash_get_current_key_ex(stmt->bound_params, &str, &len, &num, 0, &pos) == HASH_KEY_IS_LONG) {
+                       res = zend_hash_get_current_key_ex(stmt->bound_params, &str, &len, &num, 0, &pos);
+                       if (res == HASH_KEY_IS_LONG) {
                                php_stream_printf(out TSRMLS_CC, "Key: Position #%ld:\n", num);
-                       } else {
-                               php_stream_printf(out TSRMLS_CC, "Key: Name: [%d] %.*s\n", len, len, str);
+                       } else if (res == HASH_KEY_IS_STRING) {
+                               php_stream_printf(out TSRMLS_CC, "Key: Name: [%d] %.*s\n", len, len, str.s);
+                       } else if (res == HASH_KEY_IS_UNICODE) {
+                               php_stream_printf(out TSRMLS_CC, "Key: Name: [%d] %.*r\n", len, len, str.u);
                        }
 
                        php_stream_printf(out TSRMLS_CC, "paramno=%d\nname=[%d] \"%.*s\"\nis_param=%d\nparam_type=%d\n",