]> granicus.if.org Git - php/commitdiff
fix #38431 (xmlrpc_get_type() crashes PHP on objects)
authorAntony Dovgal <tony2001@php.net>
Fri, 11 Aug 2006 17:41:49 +0000 (17:41 +0000)
committerAntony Dovgal <tony2001@php.net>
Fri, 11 Aug 2006 17:41:49 +0000 (17:41 +0000)
ext/xmlrpc/tests/bug38431.phpt [new file with mode: 0644]
ext/xmlrpc/xmlrpc-epi-php.c

diff --git a/ext/xmlrpc/tests/bug38431.phpt b/ext/xmlrpc/tests/bug38431.phpt
new file mode 100644 (file)
index 0000000..288fe10
--- /dev/null
@@ -0,0 +1,25 @@
+--TEST--
+Bug #38431 (xmlrpc_get_type() crashes PHP on objects)
+--SKIPIF--
+<?php if (!extension_loaded("xmlrpc")) print "skip"; ?>
+--FILE--
+<?php
+
+var_dump(xmlrpc_get_type(new stdclass));
+var_dump(xmlrpc_get_type(array()));
+$var = array(1,2,3);
+var_dump(xmlrpc_get_type($var));
+$var = array("test"=>1,2,3);
+var_dump(xmlrpc_get_type($var));
+$var = array("test"=>1,"test2"=>2);
+var_dump(xmlrpc_get_type($var));
+
+echo "Done\n";
+?>
+--EXPECTF--    
+string(5) "array"
+string(5) "array"
+string(5) "array"
+string(5) "mixed"
+string(6) "struct"
+Done
index 49abfc20bb396af7cb3d0ec546db6343b32692de..aa3867f29fc976e022a267f43b3cb2c44b801910 100644 (file)
@@ -1467,7 +1467,7 @@ PHP_FUNCTION(xmlrpc_get_type)
 
        type = get_zval_xmlrpc_type(*arg, 0);
        if (type == xmlrpc_vector) {
-               vtype = determine_vector_type(Z_ARRVAL_PP(arg));
+               vtype = determine_vector_type((Z_TYPE_PP(arg) == IS_OBJECT) ? Z_OBJPROP_PP(arg) : Z_ARRVAL_PP(arg));
        }
    
        RETURN_STRING((char*) xmlrpc_type_as_str(type, vtype), 1);