From: Olle Johansson Date: Fri, 16 Feb 2007 12:06:23 +0000 (+0000) Subject: Issue #7541 - Handle multipart attachments to SIP messages - even if boundary is... X-Git-Tag: 1.4.1~92 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=3ca445e34c13d92ef30ae81302936de1bfdabdd9;p=thirdparty%2Fasterisk.git Issue #7541 - Handle multipart attachments to SIP messages - even if boundary is quoted. git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@54787 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index ec01afe6dc..f8d357dda1 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -4620,6 +4620,7 @@ static int find_sdp(struct sip_request *req) const char *search; char *boundary; unsigned int x; + int boundaryisquoted = FALSE; content_type = get_header(req, "Content-Type"); @@ -4639,15 +4640,24 @@ static int find_sdp(struct sip_request *req) return 0; search += 10; - if (ast_strlen_zero(search)) return 0; + /* If the boundary is quoted with ", remove quote */ + if (*search == '\"') { + search++; + boundaryisquoted = TRUE; + } + /* make a duplicate of the string, with two extra characters at the beginning */ boundary = ast_strdupa(search - 2); boundary[0] = boundary[1] = '-'; + /* Remove final quote */ + if (boundaryisquoted) + boundary[strlen(boundary) - 1] = '\0'; + /* search for the boundary marker, but stop when there are not enough lines left for it, the Content-Type header and at least one line of body */