Commit:    2f1c4064f8fd971166df3099729e74e0ecb5d6bc
Author:    Xinchen Hui <larue...@php.net>         Tue, 30 Oct 2012 11:08:14 
+0800
Parents:   b5344e267a5866717cd3e36f9d4c428ec701adda
Branches:  PHP-5.3

Link:       
http://git.php.net/?p=php-src.git;a=commitdiff;h=2f1c4064f8fd971166df3099729e74e0ecb5d6bc

Log:
Fixed bug #63389 (Missing context check on libxml_set_streams_context() causes 
memleak)

Simply change the expect parameter type, the valid of the resource will
be checked in using time.

Bugs:
https://bugs.php.net/63389

Changed paths:
  M  NEWS
  M  ext/libxml/libxml.c
  M  ext/libxml/tests/004.phpt
  A  ext/libxml/tests/bug63389.phpt


Diff:
diff --git a/NEWS b/NEWS
index 18be193..ba96950 100644
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,10 @@ PHP                                                            
            NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? ??? 2012, PHP 5.3.19
 
+- Libxml
+  . Fixed bug #63389 (Missing context check on libxml_set_streams_context()
+    causes memleak). (Laruence)
+
 - MySQL:
   . Fixed compilation failure on mixed 32/64 bit systems. (Andrey)
 
diff --git a/ext/libxml/libxml.c b/ext/libxml/libxml.c
index a178478..788736e 100644
--- a/ext/libxml/libxml.c
+++ b/ext/libxml/libxml.c
@@ -699,7 +699,7 @@ static PHP_FUNCTION(libxml_set_streams_context)
 {
        zval *arg;
 
-       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "z", &arg) == 
FAILURE) {
+       if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "r", &arg) == 
FAILURE) {
                return;
        }
        if (LIBXML(stream_context)) {
diff --git a/ext/libxml/tests/004.phpt b/ext/libxml/tests/004.phpt
index 8bdf593..aa87ab7 100644
--- a/ext/libxml/tests/004.phpt
+++ b/ext/libxml/tests/004.phpt
@@ -27,26 +27,26 @@ echo "Done\n";
 
 ?>
 --EXPECTF--
-Warning: stream_context_create(): options should have the form 
["wrappername"]["optionname"] = $value in %s004.php on line 10
-NULL
+Warning: stream_context_create(): options should have the form 
["wrappername"]["optionname"] = $value in %s004.php on line %d
 
-Warning: DOMDocument::load(): supplied argument is not a valid Stream-Context 
resource in %s004.php on line 18
-bool(true)
+Warning: libxml_set_streams_context() expects parameter 1 to be resource, null 
given in %s004.php on line %d
 NULL
-
-Warning: DOMDocument::load(): supplied argument is not a valid Stream-Context 
resource in %s004.php on line 18
 bool(true)
-NULL
 
-Warning: DOMDocument::load(): supplied argument is not a valid Stream-Context 
resource in %s004.php on line 18
-bool(true)
+Warning: libxml_set_streams_context() expects parameter 1 to be resource, 
string given in %s004.php on line %d
 NULL
+bool(true)
 
-Warning: DOMDocument::load(): supplied argument is not a valid Stream-Context 
resource in %s004.php on line 18
+Warning: libxml_set_streams_context() expects parameter 1 to be resource, 
integer given in %s004.php on line %d
+NULL
 bool(true)
+
+Warning: libxml_set_streams_context() expects parameter 1 to be resource, 
object given in %s004.php on line %d
 NULL
+bool(true)
 
-Warning: DOMDocument::load(): supplied argument is not a valid Stream-Context 
resource in %s004.php on line 18
+Warning: libxml_set_streams_context() expects parameter 1 to be resource, 
array given in %s004.php on line %d
+NULL
 bool(true)
 NULL
 bool(true)
diff --git a/ext/libxml/tests/bug63389.phpt b/ext/libxml/tests/bug63389.phpt
new file mode 100644
index 0000000..e9498aa
--- /dev/null
+++ b/ext/libxml/tests/bug63389.phpt
@@ -0,0 +1,14 @@
+--TEST--
+Bug #63389 (Missing context check on libxml_set_streams_context() causes 
memleak)
+--SKIPIF--
+<?php if (!extension_loaded('libxml')) die('skip'); ?>
+--FILE--
+<?php
+$fp = fopen("php://input", "r");
+libxml_set_streams_context($fp);
+libxml_set_streams_context("a");
+echo "okey";
+?>
+--EXPECTF--
+Warning: libxml_set_streams_context() expects parameter 1 to be resource, 
string given in %sbug63389.php on line %d
+okey


--
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to