You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-user@axis.apache.org by Carl Lefrançois <ca...@gmail.com> on 2008/03/10 17:49:42 UTC

problem with deserialize response using WSDL2C generated code

Hello group,

I am getting an access violation on a call to axiom_element_get_qname()

This call results from a call to Deserialize in WSDL2C generated code while
processing the following document:

<?xml version='1.0' encoding='UTF-8'?>
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
    <soapenv:Body>
        <BrokerInformationResponse xmlns:xsi="
http://www.w3.org/2001/XMLSchema-instance"
            xmlns="
http://www.axa.ca/BrokerInformationService/1.0/BrokerInformationResponse"
            xmlns:xsd="http://www.w3.org/2001/XMLSchema"
            xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
            <TrackingNumber>UNKNOWN</TrackingNumber>
            <Status>
                <Status xmlns="">ERROR</Status>
                <Detail xmlns="">
                    <Code>ERROR</Code>
                    <Description>Could not unbind Request from
XML!</Description>
                </Detail>
            </Status>
        </BrokerInformationResponse>
    </soapenv:Body>
</soapenv:Envelope>


While stepping through the code, I see the string "UNKNOWN" extracted from
the <TrackingNumber> node.  The access violation happens when
axiom_element_get_qname() is called during processing of the <Status> node
that follows.

The call stack shows:

axiom_element_get_qname()   (called on first Status node)
axutil_string_get_buffer(om_namespace->prefix, env);   ** here
om_namespace->prefix  == 0x0000005
axutil_string_get_buffer()   ** access violation at    return
string->buffer;    because string == om_namespace->prefix


I am using the WSDL2C from the nightly distribution date March 10th and the
latest Axis2 revision from SVN.

Any thoughts on how to resolve this problem?


Carl

Re: problem with deserialize response using WSDL2C generated code

Posted by Dimuthu Gamage <di...@gmail.com>.
Hi Carl,
I 'm not sure exactly what the reason you got the error.

But it seems happening when accessing the qname of a text node rather
than an element node. But currently codegen is mostly fixed to test
whether it is a text node or element before accessing element
properties. But there may be unattended paths.

 Can you send the relevant c file (better with WSDL), so we can have a
look at it and fix the issue.

If it is the case, this is a bug in codegen deserialize code, but can
you recheck your xml too, because it seems codegen expecst an element
rather than text in place of 'UNKNOWN' text.


Thanks
Dimuthu

On Mon, Mar 10, 2008 at 10:19 PM, Carl Lefrançois
<ca...@gmail.com> wrote:
> Hello group,
>
> I am getting an access violation on a call to axiom_element_get_qname()
>
> This call results from a call to Deserialize in WSDL2C generated code while
> processing the following document:
>
> <?xml version='1.0' encoding='UTF-8'?>
>  <soapenv:Envelope
> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
>     <soapenv:Body>
>         <BrokerInformationResponse
> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>
> xmlns="http://www.axa.ca/BrokerInformationService/1.0/BrokerInformationResponse"
>             xmlns:xsd="http://www.w3.org/2001/XMLSchema"
>              xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
>             <TrackingNumber>UNKNOWN</TrackingNumber>
>             <Status>
>                  <Status xmlns="">ERROR</Status>
>                 <Detail xmlns="">
>                     <Code>ERROR</Code>
>                     <Description>Could not unbind Request from
> XML!</Description>
>                  </Detail>
>             </Status>
>         </BrokerInformationResponse>
>     </soapenv:Body>
> </soapenv:Envelope>
>
>
> While stepping through the code, I see the string "UNKNOWN" extracted from
> the <TrackingNumber> node.  The access violation happens when
> axiom_element_get_qname() is called during processing of the <Status> node
> that follows.
>
> The call stack shows:
>
> axiom_element_get_qname()   (called on first Status node)
> axutil_string_get_buffer(om_namespace->prefix, env);   ** here
> om_namespace->prefix  == 0x0000005
> axutil_string_get_buffer()   ** access violation at    return
> string->buffer;    because string == om_namespace->prefix
>
>
> I am using the WSDL2C from the nightly distribution date March 10th and the
> latest Axis2 revision from SVN.
>
> Any thoughts on how to resolve this problem?
>
>
> Carl

---------------------------------------------------------------------
To unsubscribe, e-mail: axis-c-user-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-c-user-help@ws.apache.org