Don't crash on INFO automon request with no channel
authorTerry Wilson <twilson@digium.com>
Thu, 8 Dec 2011 16:24:29 +0000 (16:24 +0000)
committerTerry Wilson <twilson@digium.com>
Thu, 8 Dec 2011 16:24:29 +0000 (16:24 +0000)
AST-2011-014. When automon was enabled in features.conf, it was possible
to crash Asterisk by sending an INFO request if no channel had been
created yet.

(closes issue ASTERISK-18805)
........

Merged revisions 347530 from http://svn.asterisk.org/svn/asterisk/branches/1.6.2
........

Merged revisions 347531 from http://svn.asterisk.org/svn/asterisk/branches/1.8
........

Merged revisions 347532 from http://svn.asterisk.org/svn/asterisk/branches/10

git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@347533 65c4cc65-6c06-0410-ace0-fbb531ad65f3

channels/chan_sip.c

index 3bbe11a..edf5018 100644 (file)
@@ -19192,11 +19192,18 @@ static void handle_request_info(struct sip_pvt *p, struct sip_request *req)
                        per device. I don't want incoming callers to record calls in my
                        pbx.
                */
-               /* first, get the feature string, if it exists */
+               
                struct ast_call_feature *feat;
                int j;
                struct ast_frame f = { AST_FRAME_DTMF, };
 
+               if (!p->owner) {        /* not a PBX call */
+                       transmit_response(p, "481 Call leg/transaction does not exist", req);
+                       sip_scheddestroy(p, DEFAULT_TRANS_TIMEOUT);
+                       return;
+               }
+
+               /* first, get the feature string, if it exists */
                ast_rdlock_call_features();
                feat = ast_find_call_feature("automon");
                if (!feat || ast_strlen_zero(feat->exten)) {