[Pkg-php-commits] [php/debian-sid] Cherry pick fix for memory issues in mysqli_options (Closes: #577784)

Raphael Geissert geissert at debian.org
Sat May 1 19:21:42 UTC 2010


---
 debian/patches/series                              |    1 +
 .../upstream/mysqli_options_mem_issue.patch        |   54 ++++++++++++++++++++
 2 files changed, 55 insertions(+), 0 deletions(-)
 create mode 100644 debian/patches/upstream/mysqli_options_mem_issue.patch

diff --git a/debian/patches/series b/debian/patches/series
index f4c0a93..0360c56 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -60,3 +60,4 @@ upstream/SplFileInfo_getPathName_parent.patch
 upstream/gc_memory_leak.patch
 upstream/date_mem_leak.patch
 upstream/dba_unaligned_mem_access.patch
+upstream/mysqli_options_mem_issue.patch
diff --git a/debian/patches/upstream/mysqli_options_mem_issue.patch b/debian/patches/upstream/mysqli_options_mem_issue.patch
new file mode 100644
index 0000000..50755b4
--- /dev/null
+++ b/debian/patches/upstream/mysqli_options_mem_issue.patch
@@ -0,0 +1,54 @@
+Description: Fix a memory leak and corruption in mysqli_options
+Origin: http://svn.php.net/viewvc?view=revision&revision=298253
+Last-Update: 2010-05-01
+
+Index: php/ext/mysqli/mysqli_api.c
+===================================================================
+--- php.orig/ext/mysqli/mysqli_api.c
++++ php/ext/mysqli/mysqli_api.c
+@@ -1665,13 +1665,13 @@ PHP_FUNCTION(mysqli_options)
+ {
+ 	MY_MYSQL		*mysql;
+ 	zval			*mysql_link = NULL;
+-	zval			*mysql_value;
++	zval			**mysql_value;
+ 	long			mysql_option;
+ 	unsigned int	l_value;
+ 	long			ret;
+ 	int				expected_type;
+ 
+-	if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "Olz", &mysql_link, mysqli_link_class_entry, &mysql_option, &mysql_value) == FAILURE) {
++	if (zend_parse_method_parameters(ZEND_NUM_ARGS() TSRMLS_CC, getThis(), "OlZ", &mysql_link, mysqli_link_class_entry, &mysql_option, &mysql_value) == FAILURE) {
+ 		return;
+ 	}
+ 	MYSQLI_FETCH_RESOURCE(mysql, MY_MYSQL *, &mysql_link, "mysqli_link", MYSQLI_STATUS_INITIALIZED);
+@@ -1682,13 +1682,13 @@ PHP_FUNCTION(mysqli_options)
+ 		}
+ 	}
+ 	expected_type = mysqli_options_get_option_zval_type(mysql_option);
+-	if (expected_type != Z_TYPE_P(mysql_value)) {
++	if (expected_type != Z_TYPE_PP(mysql_value)) {
+ 		switch (expected_type) {
+ 			case IS_STRING:
+-				convert_to_string_ex(&mysql_value);
++				convert_to_string_ex(mysql_value);
+ 				break;
+ 			case IS_LONG:
+-				convert_to_long_ex(&mysql_value);
++				convert_to_long_ex(mysql_value);
+ 				break;
+ 			default:
+ 				break;
+@@ -1696,10 +1696,10 @@ PHP_FUNCTION(mysqli_options)
+ 	}
+ 	switch (expected_type) {
+ 		case IS_STRING:
+-			ret = mysql_options(mysql->mysql, mysql_option, Z_STRVAL_PP(&mysql_value));
++			ret = mysql_options(mysql->mysql, mysql_option, Z_STRVAL_PP(mysql_value));
+ 			break;
+ 		case IS_LONG:
+-			l_value = Z_LVAL_PP(&mysql_value);
++			l_value = Z_LVAL_PP(mysql_value);
+ 			ret = mysql_options(mysql->mysql, mysql_option, (char *)&l_value);
+ 			break;
+ 		default:
-- 
1.6.5





More information about the Pkg-php-commits mailing list