[ 
https://issues.apache.org/jira/browse/AXIS2C-771?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Dimuthu Gamage resolved AXIS2C-771.
-----------------------------------

    Resolution: Fixed

Fixed in the Axis2/Java svn revision 598207

Please see the attachment of the AXIS2C-753 Jira to the relevant test case,

> Program crashes if attribute is of type axutil_qname_t*
> -------------------------------------------------------
>
>                 Key: AXIS2C-771
>                 URL: https://issues.apache.org/jira/browse/AXIS2C-771
>             Project: Axis2-C
>          Issue Type: Bug
>          Components: code generation
>    Affects Versions: Current (Nightly)
>         Environment: Win + UNIX
>            Reporter: Michael Mole
>            Priority: Critical
>
> If I have a complex type with an attribute of type axutil_qname_t*, my 
> program crashes when serializing because the generated code is trying to 
> write to unallocated memory.
> For example, my complex type looks like this:
>   <complexType name="Foo">
>       <sequence>
>           <element name="content" type="anyType" minOccurs="0">
>           </element>
>       </sequence>
>       <attribute name="property" use="required" type="QName">
>       </attribute>
>    </complexType>
> The generated code in the serialize method looks like this:
>             if(!parent_tag_closed)
>             {
>                             sprintf(text_value, "%s:%s", 
> axutil_qname_get_prefix(_Foo->property_property, env),
>                                                        
> axutil_qname_get_localpart(_Foo->property_property, env));
>                            string_to_stream = (axis2_char_t*) AXIS2_MALLOC 
> (env-> allocator, sizeof (axis2_char_t) *
>                                                             (64 + 
> strlen("property" +
>                                                              
> strlen(text_value))));
>                            sprintf(string_to_stream, " ns2:property=\"%s\"", 
> text_value);
>                            axutil_stream_write(stream, env, string_to_stream, 
> axutil_strlen(string_to_stream));
>                            AXIS2_FREE(env-> allocator, string_to_stream);
>                            AXIS2_FREE(env->allocator, text_value);
>                            ...
> This crashes when trying to get the strlen(text_value) when assigning 
> string_to_stream.  This is because text_value had never been allocated memory.
> I found that adding this line above the first sprintf allowed the code to 
> proceed:
> text_value = (axis2_char_t*) AXIS2_MALLOC ( env-> allocator, sizeof 
> (axis2_char_t) *
>                                                             ( 64 + 
> strlen(axutil_qname_get_prefix(_Foo>property_property, env)) +
>                                                              
> strlen(axutil_qname_get_localpart(_Foo>property_property, env)) ) );
> This should be added in CADBBeanTemplateSource.xsl at approximately line 2475 
> when the axutil_qname_t attribute code is generated.

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