chan_sip.c: Fix crash processing CANCEL.
authorRichard Mudgett <rmudgett@digium.com>
Sun, 11 Feb 2018 21:27:49 +0000 (15:27 -0600)
committerRichard Mudgett <rmudgett@digium.com>
Tue, 13 Feb 2018 02:57:57 +0000 (20:57 -0600)
Check if initreq data string exists before using it when processing a
CANCEL request.

ASTERISK-27666

Change-Id: Id1d0f0fa4ec94e81b332b2973d93e5a14bb4cc97

channels/chan_sip.c

index fa98990..acf5a14 100644 (file)
@@ -27425,7 +27425,7 @@ static int handle_request_cancel(struct sip_pvt *p, struct sip_request *req)
        } else {
                sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
        }
-       if (ast_str_strlen(p->initreq.data) > 0) {
+       if (p->initreq.data && ast_str_strlen(p->initreq.data) > 0) {
                struct sip_pkt *pkt, *prev_pkt;
                /* If the CANCEL we are receiving is a retransmission, and we already have scheduled
                 * a reliable 487, then we don't want to schedule another one on top of the previous