Skip to content
Snippets Groups Projects
Commit 67b47191 authored by Richard Mudgett's avatar Richard Mudgett
Browse files

chan_rtp.c: Fix uninitialized memory crash.

unicast_rtp_request() could pass an uninitialized 'us' parameter to
ast_ouraddrfor().  If ast_ouraddrfor() returns an error then the 'us'
parameter may not get initialized.  Thus when the code tries to save the
'us' parameter to the local address we could try to copy a ridiculous
sized memory buffer and segfault.

* Made pass an initialized 'us' parameter to ast_ouraddrfor() and abort
the UnicastRTP channel request if it fails.

ASTERISK-26672

Change-Id: I1ef7a7c09f4da4f15dcb6de660d2bcac5f2a95c0
parent 2fc65173
No related branches found
No related tags found
No related merge requests found
......@@ -314,7 +314,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,
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment