summaryrefslogtreecommitdiff
path: root/channels
diff options
context:
space:
mode:
authorScott Griepentrog <scott@griepentrog.com>2017-09-06 17:05:32 -0400
committerScott Griepentrog <scott@griepentrog.com>2017-09-06 16:14:26 -0500
commitc0d4f1880e0bee6f8a2e283a8333b2b89c543f13 (patch)
tree883f48790ad2c58d3abc510fcf6b85c07be5796c /channels
parent9a366d24242a0fc1e7d04b8859ac5773193aa932 (diff)
chan_sip: when getting sip pvt return failure if not found
In handle_request_invite, when processing a pickup, a call is made to get_sip_pvt_from_replaces to locate the pvt for the subscription. The pvt is assumed to be valid when zero is returned indicating no error, and is dereferenced which can cause a crash if it was not found. This change checks the not found case and returns -1 which allows the calling code to fail appropriately. ASTERISK-27217 #close Reported-by: Bryan Walters Change-Id: I6bee92b8b8b85fcac3fd66f8c00ab18bc1765612
Diffstat (limited to 'channels')
-rw-r--r--channels/chan_sip.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index b19c66915..e862e9d5a 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -18568,6 +18568,11 @@ static int get_sip_pvt_from_replaces(const char *callid, const char *totag,
}
}
+ if (!sip_pvt_ptr) {
+ /* return error if sip_pvt was not found */
+ return -1;
+ }
+
/* If we're here sip_pvt_ptr has been copied to *out_pvt, prevent RAII_VAR cleanup */
sip_pvt_ptr = NULL;