This is an automated email from the ASF dual-hosted git repository. robertlazarski pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/axis-axis2-c-core.git
commit f698dafe80dcdd5dc93064c8e4c8d3bc3aa4fa45 Author: Robert Lazarski <[email protected]> AuthorDate: Sat Jan 10 09:05:20 2026 -1000 Fix memory leaks in In-Only message handling (AXIS2C-1204) Fix two memory leaks in axis2_raw_xml_in_out_msg_recv_invoke_business_logic_sync: 1. res_name string leak: The dynamically allocated response name string from axutil_stracat() was not being freed. Now freed in both success and error paths of RPC response handling. 2. default_envelope leak: When axiom_soap_header_create_with_parent, axiom_soap_body_create_with_parent, or axiom_soap_body_get_base_node failed, the function returned without freeing the already-created SOAP envelope. Added axiom_soap_envelope_free() calls in all three early return paths. Co-Authored-By: Claude Opus 4.5 <[email protected]> --- src/core/receivers/raw_xml_in_out_msg_recv.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/core/receivers/raw_xml_in_out_msg_recv.c b/src/core/receivers/raw_xml_in_out_msg_recv.c index 63a8b8cba..a87a5e700 100644 --- a/src/core/receivers/raw_xml_in_out_msg_recv.c +++ b/src/core/receivers/raw_xml_in_out_msg_recv.c @@ -241,12 +241,14 @@ axis2_raw_xml_in_out_msg_recv_invoke_business_logic_sync( ns = axiom_namespace_create(env, "http://soapenc/", "res"); if(!ns) { + AXIS2_FREE(env->allocator, res_name); status = AXIS2_FAILURE; } else { /*body_content_element = */ - axiom_element_create(env, NULL, res_name, ns, &body_content_node); + axiom_element_create(env, NULL, res_name, ns, &body_content_node); + AXIS2_FREE(env->allocator, res_name); axiom_node_add_child(body_content_node, env, result_node); } } @@ -345,18 +347,21 @@ axis2_raw_xml_in_out_msg_recv_invoke_business_logic_sync( out_header = axiom_soap_header_create_with_parent(env, default_envelope); if(!out_header) { + axiom_soap_envelope_free(default_envelope, env); return AXIS2_FAILURE; } out_body = axiom_soap_body_create_with_parent(env, default_envelope); if(!out_body) { + axiom_soap_envelope_free(default_envelope, env); return AXIS2_FAILURE; } out_node = axiom_soap_body_get_base_node(out_body, env); if(!out_node) { + axiom_soap_envelope_free(default_envelope, env); return AXIS2_FAILURE; }
