From: Kevin P. Fleming Date: Mon, 23 Nov 2009 14:13:56 +0000 (+0000) Subject: Ensure that SDP parsing does not ignore the last line of the SDP. X-Git-Tag: 1.4.28-rc1~11^2~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=800a1df30400eebbea457998e114b4df829eb9d7;p=thirdparty%2Fasterisk.git Ensure that SDP parsing does not ignore the last line of the SDP. (closes issue #16268) Reported by: sgimeno git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@230772 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/channels/chan_sip.c b/channels/chan_sip.c index 368de4b58a..52ce80a6d4 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -4367,7 +4367,7 @@ static const char *get_sdp_iterate(int *start, struct sip_request *req, const ch { int len = strlen(name); - while (*start < req->sdp_end) { + while (*start <= req->sdp_end) { const char *r = get_body_by_line(req->line[(*start)++], name, len); if (r[0] != '\0') return r; @@ -4377,15 +4377,16 @@ static const char *get_sdp_iterate(int *start, struct sip_request *req, const ch } /*! \brief Fetches the next valid SDP line between the 'start' line - * and the 'stop' line. Returns the type ('a', 'c', ...) and - * matching line in reference 'start' is updated with the next line number. + * and the 'stop' line (*excluding* the 'stop' line). Returns the type + * ('a', 'c', ...) and matching line in reference 'start' is updated with the + * next line number. */ static char get_sdp_line(int *start, int stop, struct sip_request *req, const char **value) { char type = '\0'; const char *line = NULL; - if (stop > req->sdp_end || stop < req->sdp_start) stop = req->sdp_end; + if (stop > req->sdp_end || stop < req->sdp_start) stop = req->sdp_end + 1; while (*start < stop) { line = req->line[(*start)++];