Bug #69341 [Opn->Nab]: segfault when complex SoapHeader given - reproducable

From: Date: Tue, 31 Mar 2015 20:42:16 +0000
Subject: Bug #69341 [Opn->Nab]: segfault when complex SoapHeader given - reproducable
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-191756@lists.php.net to get a copy of this message
Edit report at https://bugs.php.net/bug.php?id=69341&edit=1 ID: 69341 Updated by: cmb@php.net Reported by: wuerfl at it-wuerfl dot de Summary: segfault when complex SoapHeader given - reproducable -Status: Open +Status: Not a bug Type: Bug Package: SOAP related Operating System: Linux (Ubuntu/Red Hat Santiago) PHP Version: 5.5.23 Block user comment: N Private report: N New Comment: Please do not submit the same bug more than once. An existing bug report already describes this very problem. Even if you feel that your issue is somewhat different, the resolution is likely to be the same. Thank you for your interest in PHP. > Should it be : Z_TYPE_PP(znamens) instead of zname? Yes, see bug #69288. Previous Comments: ------------------------------------------------------------------------ [2015-03-31 16:47:25] wuerfl at it-wuerfl dot de i found the error source, please look in ext/soap/php_encoding.c in LINE 466 if (zend_hash_find(ht, "enc_namens", sizeof("enc_namens"), (void **)&znamens) == SUCCESS && Z_TYPE_PP(zname) == IS_STRING) { Should it be : Z_TYPE_PP(znamens) instead of zname? ------------------------------------------------------------------------ [2015-03-31 16:43:26] cmb@php.net Probably related to bug #69288 and bug #69293. ------------------------------------------------------------------------ [2015-03-31 16:06:18] wuerfl at it-wuerfl dot de Description: ------------ We have the bug under magento (but is a general bug), always when a complex SoapHeader is given, soap.so segfaults in PHP-FPM Module Test script: --------------- $soapclient = new SoapClient($loggingSoapClientParameters); $auth = array( 'UsernameToken'=> array('Username'=>$username,'Password'=>$password) ); $ns = 'http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd'; $ns = 'http://example.com/'; Mage::log($wsseAuthHeader); $auth = new SoapVar($auth, SOAP_ENC_ARRAY, NULL, $ns , NULL, $ns); $wsseAuthHeader = new SoapHeader($ns,'Security',$auth,true); $soapClient->__setSoapHeaders(array($wsseAuthHeader)); $requestGetSecurityToken = new stdClass(); $requestGetSecurityToken->UsesCount = 10; $parameter = array("request" => $requestGetSecurityToken); // execute the request $soapResponse = $soapClient->GetSecurityToken($parameter); Expected result: ---------------- no segfault Actual result: -------------- Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". Program received signal SIGSEGV, Segmentation fault. master_to_xml_int (encode=encode@entry=0x0, data=<optimized out>, style=style@entry=2, parent=parent@entry=0x1110930, check_class_map=check_class_map@entry=1) at /usr/src/php/ext/soap/php_encoding.c:466 466 if (zend_hash_find(ht, "enc_namens", sizeof("enc_namens"), (void **)&znamens) == SUCCESS && (gdb) bt #0 master_to_xml_int (encode=encode@entry=0x0, data=<optimized out>, style=style@entry=2, parent=parent@entry=0x1110930, check_class_map=check_class_map@entry=1) at /usr/src/php/ext/soap/php_encoding.c:466 #1 0x00007ffff0a31a3b in master_to_xml (encode=encode@entry=0x0, data=<optimized out>, style=style@entry=2, parent=parent@entry=0x1110930) at /usr/src/php/ext/soap/php_encoding.c:539 #2 0x00007ffff0a25ef8 in serialize_function_call (this_ptr=<optimized out>, function=<optimized out>, function_name=<optimized out>, uri=<optimized out>, arguments=<optimized out>, arg_count=<optimized out>, version=1, soap_headers=0x187a6d8) at /usr/src/php/ext/soap/soap.c:4377 #3 0x00007ffff0a2bf9d in do_soap_call (this_ptr=0x177c0bb, this_ptr@entry=0x178bf40, function=0x7ffff0a595e3 "O", arg_count=24625328, arg_count@entry=1, real_args=0x736e, real_args@entry=0x0, return_value=0x4, return_value@entry=0x187a6d8, location=0x652fb767fe9 <error: Cannot access memory at address 0x652fb767fe9>, location@entry=0x0, soap_action=0x0, call_uri=0x0, soap_headers=0x187a6d8, output_headers=0x0, function_len=<optimized out>) at /usr/src/php/ext/soap/soap.c:2719 #4 0x00007ffff0a2c779 in zim_SoapClient___call (ht=<optimized out>, return_value=<optimized out>, return_value_ptr=<optimized out>, this_ptr=0x178bf40, return_value_used=<optimized out>) at /usr/src/php/ext/soap/soap.c:2943 #5 0x00007ffff23e16e5 in xdebug_execute_internal (current_execute_data=0x7fffffff9b60, fci=0x7fffffff9ca0, return_value_used=1) at /tmp/xdebug/xdebug.c:1651 #6 0x00000000006de9b5 in zend_call_function () #7 0x000000000070314c in zend_call_method () #8 0x000000000070f1dd in zend_std_call_user_call () #9 0x00007ffff23e16e5 in xdebug_execute_internal (current_execute_data=0x7ffff7fa2670, fci=0x0, return_value_used=1) at /tmp/xdebug/xdebug.c:1651 #10 0x00000000007a2f8e in ?? () #11 0x0000000000715af0 in execute_ex () #12 0x00007ffff23e0dc2 in xdebug_execute_ex (execute_data=0x7ffff7fa2670) at /tmp/xdebug/xdebug.c:1526 #13 0x00000000007a33a7 in ?? () #14 0x0000000000715af0 in execute_ex () #15 0x00007ffff23e0dc2 in xdebug_execute_ex (execute_data=0x7ffff7fa2180) at /tmp/xdebug/xdebug.c:1526 #16 0x00000000006ed9c0 in zend_execute_scripts () #17 0x000000000068e908 in php_execute_script () #18 0x00000000007a4faf in ?? () #19 0x000000000042ddb7 in ?? () #20 0x00007ffff5a1eb45 in __libc_start_main (main=0x42d990, argc=2, argv=0x7fffffffdb78, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdb68) at libc-start.c:287 #21 0x000000000042def8 in _start () ------------------------------------------------------------------------ -- Edit this bug report at https://bugs.php.net/bug.php?id=69341&edit=1

« previous php.bugs (#191756) next »