]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_stasis_snoop: Fix snoop crash
authorsungtae kim <sungtae.kim@avoxi.com>
Wed, 4 Jan 2023 12:35:20 +0000 (21:35 +0900)
committersungtae kim <pchero21@gmail.com>
Mon, 30 Jan 2023 12:29:04 +0000 (06:29 -0600)
Added NULL pointer check and channel lock to prevent resource release
while the chanspy is processing.

ASTERISK-29604

Change-Id: Ibdc675f98052da32333b19685b1708a3751b6d24

res/res_stasis_snoop.c

index 70cdd7cf17b0f2e49a3134d99e617ac7e8d7cc08..12964cca008f9201c96d5f26f429bf54dc3c5c24 100644 (file)
@@ -135,9 +135,13 @@ static void publish_chanspy_message(struct stasis_app_snoop *snoop, int start)
        }
        ast_multi_channel_blob_add_channel(payload, "spyer_channel", snoop_snapshot);
 
-       spyee_snapshot = ast_channel_snapshot_get_latest(ast_channel_uniqueid(snoop->spyee_chan));
-       if (spyee_snapshot) {
-               ast_multi_channel_blob_add_channel(payload, "spyee_channel", spyee_snapshot);
+       if (snoop->spyee_chan) {
+               ast_channel_lock(snoop->spyee_chan);
+               spyee_snapshot = ast_channel_snapshot_get_latest(ast_channel_uniqueid(snoop->spyee_chan));
+               ast_channel_unlock(snoop->spyee_chan);
+               if (spyee_snapshot) {
+                       ast_multi_channel_blob_add_channel(payload, "spyee_channel", spyee_snapshot);
+               }
        }
 
        message = stasis_message_create(type, payload);