< Previous by Date | Date Index | Next by Date > |
< Previous in Thread | Thread Index |
any update on this issue.On Wednesday, 23 April 2014 2:29 PM, alok tiwari <kumartiwarialok@xxxxxxxxxxx> wrote:
Hi Scott,Thanks for the response.As I mentioned, the stack goes into infinite loop while parsing the following value in "Proxy-Authorization" header.Proxy-Authorization: Digest =AKAv0-MD5
The function resip::Auth::parseAuthParameters() goes into infinite loop as keyEnd returned by pb.skipToOneOf() is always same as keyStart. Please refer the function "resip::Auth::parseAuthParameters()" in file rutil/parseBuffer.cxx.This issue is not observed if there is an lvalue in Proxy-Authoriation header i.e.Proxy-Authorization: Digest a=AKAv0-MD5Hope the above will help you.Thanks,AlokOn Tuesday, 22 April 2014 7:54 PM, Scott Godin <sgodin@xxxxxxxxxxxxxxx> wrote:
Since parseAllHeaders is being called you must have PEDANTIC_STACK preprocessor flag turned on.Check out the code in TransactionState.cxx - search for #ifdef PEDANTIC_STACK. If we fail to parse a SIP message the exception should be caught and we call handleBadRequest which attempts to respond with 400 - assuming there are enough good headers to allow formation of a response.What do you mean by hanged? Does it deadlock, trap or tight spin?Can you create a small test program, similar to resip/test/testSipMessage.cxx that tries to call parseAllHeaders on your invalid SipMessage and can demonstrate the problem?Thanks,ScottOn Mon, Apr 21, 2014 at 11:16 AM, alok tiwari <kumartiwarialok@xxxxxxxxxxx> wrote:
Hi,Resip stack is getting hanged when API parseAllHeaders() is invoked for an incoming INVITE having following malformed proxy-authorization header.
Proxy-Authorization: Digest =AKAv0-MD5
The thread which is stucked have the following backtrace:#0 0x08498ad7 in std::bitset<256u>::_Unchecked_test ()
#1 0x08499385 in std::bitset<256u>::test ()
#2 0x084993ad in resip::ParseBuffer::skipToOneOf ()
#3 0x0849802a in resip::Auth::parseAuthParameters ()
#4 0x084983dd in resip::Auth::parse ()
#5 0x084e2d20 in resip::LazyParser::doParse ()
#6 0x08498d13 in resip::LazyParser::checkParsed ()
#7 0x084d2cd0 in resip::ParserContainer<resip::Auth>::parseAll ()
#8 0x08528d2d in resip::SipMessage::parseAllHeaders ()
However, the same scenario is working fine on older resiprocate release 1.6. I analyzed and found some new changes in functions for auth handling.Kindly help to find some solution for the same.Regards,Alok
_______________________________________________
resiprocate-users mailing list
resiprocate-users@xxxxxxxxxxxxxxx
List Archive: http://list.resiprocate.org/archive/resiprocate-users/
_______________________________________________
resiprocate-users mailing list
resiprocate-users@xxxxxxxxxxxxxxx
List Archive: http://list.resiprocate.org/archive/resiprocate-users/