]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
chan_mgcp: Properly handle malformed media lines
authorKinsey Moore <kmoore@digium.com>
Wed, 23 Oct 2013 15:22:54 +0000 (15:22 +0000)
committerKinsey Moore <kmoore@digium.com>
Wed, 23 Oct 2013 15:22:54 +0000 (15:22 +0000)
This corrects a situation in which a media line was not parsed properly
and resulted in a crash.

(closes issue ASTERISK-21190)
Reported by: adomjan
Patches:
    chan_mgcp.c-sscnaf_fix uploaded by adomjan (License 5448)
........

Merged revisions 401537 from http://svn.asterisk.org/svn/asterisk/branches/1.8

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/11@401538 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_mgcp.c

index c3a5c58f4374954ee49f867a40ce99b8bc02a8ea..633ae146352c8e50299f7fd867a4185235a89e6f 100644 (file)
@@ -1960,7 +1960,7 @@ static int process_sdp(struct mgcp_subchannel *sub, struct mgcp_request *req)
        char *c;
        char *a;
        char host[258];
-       int len;
+       int len = 0;
        int portno;
        struct ast_format_cap *peercap;
        int peerNonCodecCapability;
@@ -1990,8 +1990,8 @@ static int process_sdp(struct mgcp_subchannel *sub, struct mgcp_request *req)
                ast_log(LOG_WARNING, "Unable to lookup host in c= line, '%s'\n", c);
                return -1;
        }
-       if (sscanf(m, "audio %30d RTP/AVP %n", &portno, &len) != 1) {
-               ast_log(LOG_WARNING, "Unable to determine port number for RTP in '%s'\n", m);
+       if (sscanf(m, "audio %30d RTP/AVP %n", &portno, &len) != 1 || !len) {
+               ast_log(LOG_WARNING, "Malformed media stream descriptor: %s\n", m);
                return -1;
        }
        sin.sin_family = AF_INET;