res_pjsip_session: Check if sequence header is missing
authorKevin Harwell <kharwell@digium.com>
Wed, 3 Jan 2018 16:41:46 +0000 (10:41 -0600)
committerKevin Harwell <kharwell@digium.com>
Wed, 3 Jan 2018 16:46:25 +0000 (10:46 -0600)
The pjsip_msg_find_hdr function can return NULL. This patch adds a check
when searching for the sequence header to make sure a NULL pointer is never
de-referenced.

Change-Id: I19af23aeeded65be016be92360e8cb7ffe51fad2

res/res_pjsip_session.c

index 64c150e..c339382 100644 (file)
@@ -3309,6 +3309,12 @@ static void handle_outgoing_response(struct ast_sip_session *session, pjsip_tx_d
        struct ast_sip_session_supplement *supplement;
        struct pjsip_status_line status = tdata->msg->line.status;
        pjsip_cseq_hdr *cseq = pjsip_msg_find_hdr(tdata->msg, PJSIP_H_CSEQ, NULL);
+
+       if (!cseq) {
+               ast_log(LOG_ERROR, "Cannot send response due to missing sequence header");
+               return;
+       }
+
        ast_debug(3, "Method is %.*s, Response is %d %.*s\n", (int) pj_strlen(&cseq->method.name),
                pj_strbuf(&cseq->method.name), status.code, (int) pj_strlen(&status.reason),
                pj_strbuf(&status.reason));