[Asterisk-code-review] res pjsip sdp rtp.c: Don't alter global addr variable. (asterisk[14])
Richard Mudgett
asteriskteam at digium.com
Tue Apr 4 13:37:53 CDT 2017
Richard Mudgett has uploaded a new change for review. ( https://gerrit.asterisk.org/5400 )
Change subject: res_pjsip_sdp_rtp.c: Don't alter global addr variable.
......................................................................
res_pjsip_sdp_rtp.c: Don't alter global addr variable.
* create_rtp(): Fix unexpected alteration of global address_rtp if a
transport is bound to an address.
* create_rtp(): Fix use of uninitialized memory if the endpoint RTP media
address is invalid or the transport has an invalid address.
ASTERISK-26851
Change-Id: Icde42e65164a88913cb5c2601b285eebcff397b7
---
M res/res_pjsip_sdp_rtp.c
1 file changed, 18 insertions(+), 5 deletions(-)
git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/00/5400/1
diff --git a/res/res_pjsip_sdp_rtp.c b/res/res_pjsip_sdp_rtp.c
index 95aae55..cbb2bef 100644
--- a/res/res_pjsip_sdp_rtp.c
+++ b/res/res_pjsip_sdp_rtp.c
@@ -199,8 +199,16 @@
struct ast_sockaddr *media_address = &address_rtp;
if (session->endpoint->media.bind_rtp_to_media_address && !ast_strlen_zero(session->endpoint->media.address)) {
- ast_sockaddr_parse(&temp_media_address, session->endpoint->media.address, 0);
- media_address = &temp_media_address;
+ if (ast_sockaddr_parse(&temp_media_address, session->endpoint->media.address, 0)) {
+ ast_debug(1, "Endpoint %s: Binding RTP media to %s\n",
+ ast_sorcery_object_get_id(session->endpoint),
+ session->endpoint->media.address);
+ media_address = &temp_media_address;
+ } else {
+ ast_debug(1, "Endpoint %s: RTP media address invalid: %s\n",
+ ast_sorcery_object_get_id(session->endpoint),
+ session->endpoint->media.address);
+ }
} else {
struct ast_sip_transport *transport =
ast_sorcery_retrieve_by_id(ast_sip_get_sorcery(), "transport",
@@ -210,9 +218,14 @@
char hoststr[PJ_INET6_ADDRSTRLEN];
pj_sockaddr_print(&transport->state->host, hoststr, sizeof(hoststr), 0);
- ast_debug(1, "Transport: %s bound to host: %s, using this for media.\n",
- session->endpoint->transport, hoststr);
- ast_sockaddr_parse(media_address, hoststr, 0);
+ if (ast_sockaddr_parse(&temp_media_address, hoststr, 0)) {
+ ast_debug(1, "Transport %s bound to %s: Using it for RTP media.\n",
+ session->endpoint->transport, hoststr);
+ media_address = &temp_media_address;
+ } else {
+ ast_debug(1, "Transport %s bound to %s: Invalid for RTP media.\n",
+ session->endpoint->transport, hoststr);
+ }
}
ao2_cleanup(transport);
}
--
To view, visit https://gerrit.asterisk.org/5400
To unsubscribe, visit https://gerrit.asterisk.org/settings
Gerrit-MessageType: newchange
Gerrit-Change-Id: Icde42e65164a88913cb5c2601b285eebcff397b7
Gerrit-PatchSet: 1
Gerrit-Project: asterisk
Gerrit-Branch: 14
Gerrit-Owner: Richard Mudgett <rmudgett at digium.com>
More information about the asterisk-code-review
mailing list