From 9ef4bd2f9ca2833a4ac649e80e67a84ec27936cc Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Wed, 5 Jun 2013 13:54:47 -0400 Subject: [PATCH] ignore invalid attributes --- daemon/sdp.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/daemon/sdp.c b/daemon/sdp.c index f8603fa6b..8807c972c 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -119,7 +119,6 @@ struct sdp_attribute { param; /* "PCMA/8000" */ enum { - ATTR_INVALID = -1, ATTR_OTHER = 0, ATTR_RTCP, ATTR_CANDIDATE, @@ -445,7 +444,7 @@ static int parse_attribute_candidate(struct sdp_attribute *output) { return 0; } -static void parse_attribute(struct sdp_attribute *a) { +static int parse_attribute(struct sdp_attribute *a) { int ret; a->name = a->line_value; @@ -511,8 +510,7 @@ static void parse_attribute(struct sdp_attribute *a) { break; } - if (ret) - a->attr = ATTR_INVALID; + return ret; } int sdp_parse(str *body, GQueue *sessions) { @@ -604,7 +602,10 @@ int sdp_parse(str *body, GQueue *sessions) { attr->line_value.s = value; attr->line_value.len = line_end - value; - parse_attribute(attr); + if (parse_attribute(attr)) { + g_slice_free1(sizeof(*attr), attr); + break; + } attrs = media ? &media->attributes : &session->attributes; g_queue_push_tail(&attrs->list, attr);