summaryrefslogtreecommitdiff
path: root/ext/mysqli/mysqli_prop.c
diff options
context:
space:
mode:
authorAntony Dovgal <tony2001@php.net>2006-02-16 20:58:59 +0000
committerAntony Dovgal <tony2001@php.net>2006-02-16 20:58:59 +0000
commit1e8aad5075ff3cdc063fbcbd238f2dce41f6d92a (patch)
tree4b12fc6a19047a7da23dd8cff3d95740d547bc84 /ext/mysqli/mysqli_prop.c
parentce9dfedc69ab6d45973d38758e253ff64ec87d69 (diff)
downloadphp-git-1e8aad5075ff3cdc063fbcbd238f2dce41f6d92a.tar.gz
MFH: add checks and fix possible reincarnations of bug #36420
Diffstat (limited to 'ext/mysqli/mysqli_prop.c')
-rw-r--r--ext/mysqli/mysqli_prop.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/ext/mysqli/mysqli_prop.c b/ext/mysqli/mysqli_prop.c
index 3318944cc7..19db5bc1de 100644
--- a/ext/mysqli/mysqli_prop.c
+++ b/ext/mysqli/mysqli_prop.c
@@ -40,13 +40,34 @@
MYSQL *p; \
ALLOC_ZVAL(*retval);\
CHECK_OBJECT();\
-p = (MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql;
+if (!obj->ptr || !(MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr) { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", obj->zo.ce->name);\
+ ZVAL_NULL(*retval);\
+ return SUCCESS; \
+} else if (!obj->valid) { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid resource %s", obj->zo.ce->name);\
+ ZVAL_NULL(*retval);\
+ return SUCCESS; \
+} else { \
+ p = (MYSQL *)((MY_MYSQL *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr)->mysql; \
+}
#define MYSQLI_GET_RESULT() \
MYSQL_RES *p; \
ALLOC_ZVAL(*retval);\
CHECK_OBJECT();\
-p = (MYSQL_RES *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr
+if (!obj->ptr) { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "Couldn't fetch %s", obj->zo.ce->name);\
+ ZVAL_NULL(*retval);\
+ return SUCCESS; \
+} else if (!obj->valid) { \
+ php_error_docref(NULL TSRMLS_CC, E_WARNING, "invalid resource %s", obj->zo.ce->name);\
+ ZVAL_NULL(*retval);\
+ return SUCCESS; \
+} else { \
+ p = (MYSQL_RES *)((MYSQLI_RESOURCE *)(obj->ptr))->ptr; \
+}
+
#define MYSQLI_GET_STMT() \
MYSQL_STMT *p; \