tony2001                Mon Aug 14 08:15:44 2006 UTC

  Added files:                 
    /php-src/ext/xmlrpc/tests   001.phpt 002.phpt 

  Modified files:              
    /php-src/ext/xmlrpc xmlrpc-epi-php.c 
  Log:
  fix segfault and leak in ext/xmlrpc
  add tests
  
  
http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/xmlrpc-epi-php.c?r1=1.45&r2=1.46&diff_format=u
Index: php-src/ext/xmlrpc/xmlrpc-epi-php.c
diff -u php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.45 
php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.46
--- php-src/ext/xmlrpc/xmlrpc-epi-php.c:1.45    Fri Aug 11 17:41:49 2006
+++ php-src/ext/xmlrpc/xmlrpc-epi-php.c Mon Aug 14 08:15:44 2006
@@ -51,7 +51,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: xmlrpc-epi-php.c,v 1.45 2006/08/11 17:41:49 tony2001 Exp $ */
+/* $Id: xmlrpc-epi-php.c,v 1.46 2006/08/14 08:15:44 tony2001 Exp $ */
 
 /**********************************************************************
 * BUGS:                                                               *
@@ -670,6 +670,7 @@
                        if (Z_TYPE_PP(method) == IS_NULL) {
                                XMLRPC_RequestSetRequestType(xRequest, 
xmlrpc_request_response);
                        } else {
+                               convert_to_string_ex(method);
                                XMLRPC_RequestSetMethodName(xRequest, 
Z_STRVAL_PP(method));
                                XMLRPC_RequestSetRequestType(xRequest, 
xmlrpc_request_call);
                        }
@@ -739,7 +740,7 @@
 
       if(XMLRPC_RequestGetRequestType(response) == xmlrpc_request_call) {
          if(method_name_out) {
-            convert_to_string(method_name_out);
+            zval_dtor(method_name_out);
             Z_TYPE_P(method_name_out) = IS_STRING;
             Z_STRVAL_P(method_name_out) = 
estrdup(XMLRPC_RequestGetMethodName(response));
             Z_STRLEN_P(method_name_out) = strlen(Z_STRVAL_P(method_name_out));

http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/tests/001.phpt?view=markup&rev=1.1
Index: php-src/ext/xmlrpc/tests/001.phpt
+++ php-src/ext/xmlrpc/tests/001.phpt
--TEST--
xmlrpc_encode_request() with wrong arguments
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

var_dump(xmlrpc_encode_request(-1, 1));
var_dump(xmlrpc_encode_request("", 1));
var_dump(xmlrpc_encode_request(array(), 1));
var_dump(xmlrpc_encode_request(3.4, 1));

echo "Done\n";
?>
--EXPECTF--     
string(174) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>-1</methodName>
<params>
 <param>
  <value>
   <int>1</int>
  </value>
 </param>
</params>
</methodCall>
"
string(160) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName/>
<params>
 <param>
  <value>
   <int>1</int>
  </value>
 </param>
</params>
</methodCall>
"

Notice: Array to string conversion in %s on line %d
string(177) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>Array</methodName>
<params>
 <param>
  <value>
   <int>1</int>
  </value>
 </param>
</params>
</methodCall>
"
string(175) "<?xml version="1.0" encoding="iso-8859-1"?>
<methodCall>
<methodName>3.4</methodName>
<params>
 <param>
  <value>
   <int>1</int>
  </value>
 </param>
</params>
</methodCall>
"
Done

http://cvs.php.net/viewvc.cgi/php-src/ext/xmlrpc/tests/002.phpt?view=markup&rev=1.1
Index: php-src/ext/xmlrpc/tests/002.phpt
+++ php-src/ext/xmlrpc/tests/002.phpt
--TEST--
xmlrpc_encode_request() and various arguments
--SKIPIF--
<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
--FILE--
<?php

$r = xmlrpc_encode_request("method", array());
var_dump(xmlrpc_decode_request($r, $method));
var_dump($method);

$r = xmlrpc_encode_request("method", 1);
var_dump(xmlrpc_decode_request($r, $method));
var_dump($method);

$r = xmlrpc_encode_request("method", 'param');
var_dump(xmlrpc_decode_request($r, $method));
var_dump($method);

$r = xmlrpc_encode_request(-1, "");
var_dump(xmlrpc_decode_request($r, $method));
var_dump($method);

$r = xmlrpc_encode_request(array(), 1);
var_dump(xmlrpc_decode_request($r, $method));
var_dump($method);

echo "Done\n";
?>
--EXPECTF--     
array(0) {
}
string(6) "method"
array(1) {
  [0]=>
  int(1)
}
string(6) "method"
array(1) {
  [0]=>
  string(5) "param"
}
string(6) "method"
array(1) {
  [0]=>
  string(0) ""
}
string(2) "-1"

Notice: Array to string conversion in %s on line %d
array(1) {
  [0]=>
  int(1)
}
string(5) "Array"
Done

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

Reply via email to