Merge changes from topic 'ASTERISK-26672' into 13

* changes:
  res_rtp_asterisk.c: Fix uninitialized memory crash.
  chan_rtp.c: Fix uninitialized memory crash.
changes/08/4708/1
Joshua Colp 8 years ago committed by Gerrit Code Review
commit fdfa805552

@ -316,7 +316,12 @@ static struct ast_channel *unicast_rtp_request(const char *type, struct ast_form
engine_name = S_COR(ast_test_flag(&opts, OPT_RTP_ENGINE),
opt_args[OPT_ARG_RTP_ENGINE], "asterisk");
ast_ouraddrfor(&address, &local_address);
ast_sockaddr_copy(&local_address, &address);
if (ast_ouraddrfor(&address, &local_address)) {
ast_log(LOG_ERROR, "Could not get our address for sending media to '%s'\n",
args.destination);
goto failure;
}
instance = ast_rtp_instance_new(engine_name, NULL, &local_address, NULL);
if (!instance) {
ast_log(LOG_ERROR,

@ -5008,31 +5008,31 @@ static int ast_rtp_fd(struct ast_rtp_instance *instance, int rtcp)
static void ast_rtp_remote_address_set(struct ast_rtp_instance *instance, struct ast_sockaddr *addr)
{
struct ast_rtp *rtp = ast_rtp_instance_get_data(instance);
struct ast_sockaddr local, us;
struct ast_sockaddr local;
ast_rtp_instance_get_local_address(instance, &local);
if (!ast_sockaddr_isnull(addr)) {
/* Update the local RTP address with what is being used */
ast_ouraddrfor(addr, &us);
ast_rtp_instance_get_local_address(instance, &local);
ast_sockaddr_set_port(&us, ast_sockaddr_port(&local));
ast_rtp_instance_set_local_address(instance, &us);
if (ast_ouraddrfor(addr, &local)) {
/* Failed to update our address so reuse old local address */
ast_rtp_instance_get_local_address(instance, &local);
} else {
ast_rtp_instance_set_local_address(instance, &local);
}
}
if (rtp->rtcp) {
ast_debug(1, "Setting RTCP address on RTP instance '%p'\n", instance);
ast_sockaddr_copy(&rtp->rtcp->them, addr);
if (!ast_sockaddr_isnull(addr)) {
ast_sockaddr_set_port(&rtp->rtcp->them,
ast_sockaddr_port(addr) + 1);
}
ast_sockaddr_set_port(&rtp->rtcp->them, ast_sockaddr_port(addr) + 1);
if (!ast_sockaddr_isnull(addr)) {
/* Update the local RTCP address with what is being used */
ast_sockaddr_set_port(&us, ast_sockaddr_port(&local) + 1);
ast_sockaddr_copy(&rtp->rtcp->us, &us);
ast_sockaddr_set_port(&local, ast_sockaddr_port(&local) + 1);
ast_sockaddr_copy(&rtp->rtcp->us, &local);
ast_free(rtp->rtcp->local_addr_str);
rtp->rtcp->local_addr_str = ast_strdup(ast_sockaddr_stringify(&us));
rtp->rtcp->local_addr_str = ast_strdup(ast_sockaddr_stringify(&local));
}
}
@ -5042,8 +5042,6 @@ static void ast_rtp_remote_address_set(struct ast_rtp_instance *instance, struct
rtp->strict_rtp_state = STRICT_RTP_LEARN;
rtp_learning_seq_init(&rtp->rtp_source_learn, rtp->seqno);
}
return;
}
/*! \brief Write t140 redundacy frame

Loading…
Cancel
Save