]> granicus.if.org Git - php/commitdiff
fixed bug #29656 (segfault on result and statement properties)
authorGeorg Richter <georg@php.net>
Fri, 13 Aug 2004 16:27:35 +0000 (16:27 +0000)
committerGeorg Richter <georg@php.net>
Fri, 13 Aug 2004 16:27:35 +0000 (16:27 +0000)
NEWS
ext/mysqli/mysqli.c

diff --git a/NEWS b/NEWS
index a1d9bd528c3d478acce8ac7d41b8a79b6e0a0690..bf3f615ec2bac2175e3b969588cef33074c206b7 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -3,6 +3,7 @@ PHP                                                                        NEWS
 ?? ??? 2004, PHP 5.0.2
 - Added PHP_EOL constant that contains the OS way of representing newlines.
   (Paul Hudson, Derick)
+- Fixed bug #29656 (segfault on result and statement properties) (Georg)
 
 12 Aug 2004, PHP 5.0.1
 - Changed destructor mechanism so that destructors are called prior to request
index ea3e116379bcf020dac6e873e32fdba421b246d5..4e01044e6fd440ed477f8bfd5b13b7c30b5d3547 100644 (file)
@@ -200,11 +200,21 @@ zval *mysqli_read_property(zval *object, zval *member, int type TSRMLS_DC)
                ret = zend_hash_find(obj->prop_handler, Z_STRVAL_P(member), Z_STRLEN_P(member)+1, (void **) &hnd);
        }
        if (ret == SUCCESS) {
-               /* check if connection is still valid */
-               if (!obj->ptr ||
-                   !((MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql)->thread_id) {
-                       retval = EG(uninitialized_zval_ptr);
-                       return(retval);
+               /* check if mysqli object is still valid */
+               if (!strcmp(obj->zo.ce->name, "mysqli")) {
+                       if (!obj->ptr ||
+                       !((MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql)->thread_id) {
+                               retval = EG(uninitialized_zval_ptr);
+                               return(retval);
+                       }
+               } else
+               /* check if stmt object is still valid */
+               if (!strcmp(obj->zo.ce->name, "mysqli_stmt")) {
+                       if (!obj->ptr ||
+                       !((MYSQL_STMT *)((MY_STMT *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->stmt)->mysql) {
+                               retval = EG(uninitialized_zval_ptr);
+                               return(retval);
+                       }
                }
 
                ret = hnd->read_func(obj, &retval TSRMLS_CC);