Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:rkwasny
php
php-5.1.2-phpbug-36420.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File php-5.1.2-phpbug-36420.patch of Package php
--- ext/mysqli/mysqli_prop.c 2006/01/01 12:50:09 1.23.2.1 +++ ext/mysqli/mysqli_prop.c 2006/02/16 20:58:59 1.23.2.2 @@ -15,7 +15,7 @@ | Author: Georg Richter <georg@php.net> | +----------------------------------------------------------------------+ - $Id: mysqli_prop.c,v 1.23.2.1 2006/01/01 12:50:09 sniper Exp $ + $Id: mysqli_prop.c,v 1.23.2.2 2006/02/16 20:58:59 tony2001 Exp $ */ #ifdef HAVE_CONFIG_H @@ -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; \ --- ext/mysqli/tests/bug36420.phpt 2006/02/16 16:08:52 1.1.2.1 +++ ext/mysqli/tests/bug36420.phpt 2006/02/16 20:58:59 1.1.2.2 @@ -0,0 +1,25 @@ +--TEST-- +bug #36420 (segfault when access result->num_rows after calling result->close()) +--SKIPIF-- +<?php require_once('skipif.inc'); ?> +--FILE-- +<?php + +include "connect.inc"; +$mysqli = mysqli_connect($host, $user, $passwd); + +$result = $mysqli->query('select 1'); + +$result->close(); +echo $result->num_rows; + +$mysqli->close(); +echo $result->num_rows; + +echo "Done\n"; +?> +--EXPECTF-- +Warning: main(): Couldn't fetch mysqli_result in %s on line %d + +Warning: main(): Couldn't fetch mysqli_result in %s on line %d +Done
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor