diff options
author | Filip Jenicek <phill@janevim.cz> | 2015-12-08 08:57:22 +0100 |
---|---|---|
committer | Joshua Colp <jcolp@digium.com> | 2015-12-09 08:55:15 -0600 |
commit | 142d4fefb8db0ac2c30b18f75dc415093fb77f27 (patch) | |
tree | 151343df81330cb992dac4a063c37156357d58da /channels | |
parent | 28d924307940700ce2321572b016fdd8263ac7ad (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')
-rw-r--r-- | channels/chan_sip.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/channels/chan_sip.c b/channels/chan_sip.c index c54224570..9bc15bbbc 100644 --- a/channels/chan_sip.c +++ b/channels/chan_sip.c @@ -4752,6 +4752,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) { |