[ 
https://issues.apache.org/jira/browse/AXIS2C-881?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12555814#action_12555814
 ] 

Senaka Fernando commented on AXIS2C-881:
----------------------------------------

Hi all,

I think we are referring to this code block in, 
axis2_svc_client_fill_soap_envelope


if (header_node)
{
      int size = 0;
      int i = 0;
      size = axutil_array_list_size(svc_client->headers, env);
      for (i = 0; i < size; i++)
     {
            axiom_node_t *node = NULL;
            node = axutil_array_list_get(svc_client->headers, env, i);
            if (node)
            {
                   axiom_node_add_child(header_node, env, node);
            }
      }
}

This block is leading to a dangling pointer situation. While adding nodes into 
the payload we have to remove it from the array_list. But, this is not 
happening. The suggested modification is,

            if (node)
            {
                   axiom_node_add_child(header_node, env, node);
                   axutil_array_list_remove(svc_client->headers, env, i);
                   i--;
                   size--;
            }

Regards,
Senaka

> Function axis2_svc_client_remove_all_headers [Alastair FETTES]
> --------------------------------------------------------------
>
>                 Key: AXIS2C-881
>                 URL: https://issues.apache.org/jira/browse/AXIS2C-881
>             Project: Axis2-C
>          Issue Type: Bug
>          Components: core/clientapi
>    Affects Versions: Current (Nightly)
>         Environment: Ubuntu
>            Reporter: Lahiru Gunathilake
>             Fix For: Current (Nightly)
>
>
> <snippet>
> AXIS2_EXTERN
> axis2_status_t axis2_svc_client_remove_all_headers(
>       axis2_svc_client_t*    svc_client,
>       const axutil_env_t*    env)
> </snippet>
> This function does not take responsibility for the memory allocated to the 
> pointers passed to it. In addition, the memory passed to the function 
> axis2_svc_client_add_header through the parameter header is not de-allocated 
> by this function (axis2_svc_client_remove_all_headers). This can create a 
> possible memory leak. When in used in conjunction with a call to 
> axis2_svc_client_send_receive_non_blocking, this is not a problem as this 
> function will clean up the headers itself (this is assumed, since when you 
> free the header nodes, an access violations occur when the SOAP message is 
> sent and the calling function tries to free the SOAP message data, i.e. the 
> header nodes).
> Solution: Document memory ownership for parameters and return value.  
> Investigate potential memory leak. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to