summaryrefslogtreecommitdiff
path: root/channels/chan_sip.c
diff options
context:
space:
mode:
authorFilip Jenicek <phill@janevim.cz>2015-12-08 08:57:22 +0100
committerRichard Mudgett <rmudgett@digium.com>2015-12-08 12:23:30 -0600
commit59a91c350a48dcea7dc2bf1e22f5c2cef602772b (patch)
tree50c83ee1ecfd2f14320d181f8bbfd2cbe2a92f7f /channels/chan_sip.c
parent65c8147952b60b1f16e05fb62d5b5f889775d3a6 (diff)
chan_sip: Check sip_pvt pointer in ast_channel_get_t38_state(c)
Asterisk may crash when calling ast_channel_get_t38_state(c) on a locked channel which is being hung up. ASTERISK-25609 #close Change-Id: Ifaa707c04b865a290ffab719bd2e5c48ff667c7b
Diffstat (limited to 'channels/chan_sip.c')
-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 b2d61127f..cd03e151a 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -4757,6 +4757,11 @@ static int sip_queryoption(struct ast_channel *chan, int option, void *data, int
struct sip_pvt *p = (struct sip_pvt *) ast_channel_tech_pvt(chan);
char *cp;
+ if (!p) {
+ ast_debug(1, "Attempt to Ref a null pointer. Sip private structure is gone!\n");
+ return -1;
+ }
+
sip_pvt_lock(p);
switch (option) {