From 5fca71d4b08996bd4f991583879ef12ddf9fcdfb Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 2 Mar 2015 09:48:38 -0500 Subject: [PATCH] fix segfault when parsing server reflexive ICE candidates fixes #78 --- daemon/sdp.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/daemon/sdp.c b/daemon/sdp.c index 84e71241e..21af6d49f 100644 --- a/daemon/sdp.c +++ b/daemon/sdp.c @@ -84,7 +84,9 @@ struct attribute_candidate { str port_str; str typ_str; str type_str; + str raddr_str; str related_address_str; + str rport_str; str related_port_str; struct ice_candidate cand_parsed; @@ -618,6 +620,16 @@ static int parse_attribute_candidate(struct sdp_attribute *output) { if (!ice_has_related(c->cand_parsed.type)) goto done; + EXTRACT_TOKEN(u.candidate.raddr_str); + EXTRACT_TOKEN(u.candidate.related_address_str); + EXTRACT_TOKEN(u.candidate.rport_str); + EXTRACT_TOKEN(u.candidate.related_port_str); + + if (str_cmp(&c->raddr_str, "raddr")) + return -1; + if (str_cmp(&c->rport_str, "rport")) + return -1; + if (__parse_address(&c->cand_parsed.related_address, NULL, NULL, &c->related_address_str)) return 0;