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;
     }
 

Reply via email to