Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
0.94
-
None
Description
I tried running the wsdl2c tool on some WSDL that contained the following:
<wsdl:portType name="fooSoap">
<wsdl:operation name="Foo">
<wsdl:input message="tns:FooSoapIn" />
<wsdl:output message="tns:FooSoapOut" />
</wsdl:operation>
and it failed with a segfault. Eventually I tracked down that something in the woden library
really expected a "name" attribute on these <input> and <output> elements. I'm sorry but
I've lost track exactly, but I think it was in woden/src/builder/wsdl10/wsdl10_reader.c
in the parse_binding_msg_ref() function, specifically this chunk:
int_msg_ref =
woden_wsdl10_interface_msg_ref_to_interface_msg_ref_element(
int_msg_ref, env);
intf_msg_qname = WODEN_WSDL10_INTERFACE_MSG_REF_ELEMENT_GET_QNAME(
int_msg_ref, env);
where because no matching SET_QNAME had ever been performed, this would return NULL and the code would segfault. In fact, I think this is also where I stumbled on
AXIS2C-322 re woden/src/wsdl10/msg_ref.c because after that patch, the GET_NAME
would run, but return NULL – without that patch, GET_NAME itself failed – I think. Sorry,
I've lost my notes and am working to a deadline at the moment.
Anyway, changing the WSDL to this made things work, but I don't think the name attribute is actually required by the WSDL spec – but I might be wrong about that; please check!
<wsdl:portType name="fooSoap">
<wsdl:operation name="Foo">
<wsdl:input name="FooSoapIn" message="tns:FooSoapIn" />
<wsdl:output name="FooSoapOut" message="tns:FooSoapOut" />
</wsdl:operation>