axis-c-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Robert Sanford <rsanf...@trefs.com>
Subject RE: Client Access Violation
Date Tue, 29 Jun 2004 14:19:11 GMT
I have not yet entered it in Jira but will do so later today.

Would you also like me to submit a patch? I have an idea of how to handle
the situation that won't require a modification to the method signatures and
am willing to code and submit it. Since I'm not working out of CVS I would
simply post the entire method directly to you for review.

If you want me to pursue this please send me a private email.

Many thanks!

rjsjr

> -----Original Message-----
> From: Susantha Kumara [mailto:susantha@opensource.lk] 
> Sent: Monday, June 28, 2004 10:50 PM
> To: 'Apache AXIS C User List'
> Subject: RE: Client Access Violation
> 
> 
> Hi Robert,
> 
> This is a bug. This is unhandled situation. Thanks a lot for 
> tracking it down. Have you entered this as a bug at Jira ?. 
> If not please add it.
> 
> Susantha.
> ---
> 
> > -----Original Message-----
> > From: Robert Sanford [mailto:rsanford@trefs.com]
> > Sent: Saturday, June 26, 2004 3:41 AM
> > To: axis-c-user@ws.apache.org
> > Subject: Client Access Violation
> > 
> > All,
> > 
> > I've previously used the Axis Java client code to great 
> success but am
> now
> > trying to work through a simple SOAP client in C++ and having great 
> > difficulty and am receiving an Access Violation. Using the 
> Visual C++ 
> > debugger I trace the code down into
> >   SoapSerializer::operator <<(const AxisChar* cSerialized)
> > 
> > And see that the violation is occuring at:
> >    strcat((char*)m_pSZBuffers[m_nCurrentBufferIndex].buffer,
> >    cSerialized);
> > 
> > I am trying to send up an XSD_STRING parameter that is the 
> contents of
> a
> > file. After escaping the size of the buffer is just under 11,000
> bytes. In
> > digging through the source code it appears to me that the 
> size of the 
> > buffer that the strcat is attempting to go into is 1024 bytes which 
> > will
> result
> > in
> > an access violation as I ingloriously overwrite memory. I'm guessing
> this
> > because previous in the method I see
> >     int iTmpSerBufferSize = strlen(cSerialized);
> >     if((m_nFilledSize + iTmpSerBufferSize)>= m_nCurrentBufferSize)
> > 
> > And m_nCurrentBufferSize is 1024 which is what is allocated when 
> > SetNextSerializeBuffer is called.
> > 
> > Basically, I don't see anything that is taking the size of 
> what I want
> to
> > send into account.
> > 
> > Please tell me that I'm missing something. My code is amazingly
> simplistic
> > and is copied below my sig.
> > 
> > Many thanks!
> > 
> > rjsjr
> > 
> > m_pCall = new Call();
> > 
> > m_pCall->SetProtocol(APTHTTP);
> >
> m_pCall->SetEndpointURI("http://localhost/soap/services/Reques
> tDispatch"
> );
> > 
> > Ret = m_pCall->Initialize(CPP_RPC_PROVIDER, NORMAL_CHANNEL); if 
> > (AXIS_SUCCESS != Ret)
> > 	return Ret;
> > 
> > m_pCall->SetSOAPVersion(SOAP_VER_1_1);
> > m_pCall->SetOperation("dispatch", "http://soapinterop.org/"); 
> > m_pCall->AddParameter(&xmlDoc, "arg0", XSD_STRING);
> > 
> > if (AXIS_SUCCESS == m_pCall->Invoke())
> > {
> > 	if(AXIS_SUCCESS == m_pCall->CheckMessage("dispatch",
> > "http://localhost/soap/services/RequestDispatch"))
> > 	{
> > 		AxisChar* ret = m_pCall->GetElementAsString("dispatch",
> 0);
> > 	}
> > }
> > 
> > m_pCall->UnInitialize();
> 
> 

Mime
View raw message