diff options
author | Pau Espin Pedrol <pespin@sysmocom.de> | 2020-09-18 00:32:01 +0200 |
---|---|---|
committer | Pau Espin Pedrol <pespin@sysmocom.de> | 2020-09-18 00:32:01 +0200 |
commit | cebab664a8233964db16c51ed746284d4c18c36b (patch) | |
tree | e08895c1601419e55ea3d1c4c3f16c69a114bb69 | |
parent | b6cb607d1270b76b5fae5af2a00c4414e86d9f83 (diff) |
sdp: Don't select addresses failing to parse
Change-Id: Ibfc308bdfab77d0032d8f20c2f0df913e336b75b
-rw-r--r-- | src/sdp.c | 13 |
1 files changed, 7 insertions, 6 deletions
@@ -164,20 +164,21 @@ bool sdp_extract_sdp(struct sip_call_leg *leg, const sip_t *sip, bool any_codec) for (conn = sdp->sdp_connection; conn; conn = conn->c_next) { switch (conn->c_addrtype) { case sdp_addr_ip4: + if (inet_pton(AF_INET, conn->c_address, + &((struct sockaddr_in*)&leg->base.addr)->sin_addr) != 1) + continue; leg->base.addr.ss_family = AF_INET; - inet_pton(AF_INET, conn->c_address, - &((struct sockaddr_in*)&leg->base.addr)->sin_addr); - found_conn = true; break; case sdp_addr_ip6: + if (inet_pton(AF_INET6, conn->c_address, + &((struct sockaddr_in6*)&leg->base.addr)->sin6_addr) != 1) + continue; leg->base.addr.ss_family = AF_INET6; - inet_pton(AF_INET6, conn->c_address, - &((struct sockaddr_in6*)&leg->base.addr)->sin6_addr); - found_conn = true; break; default: continue; } + found_conn = true; break; } |