From: sungtae kim Date: Wed, 4 Jan 2023 12:35:20 +0000 (+0900) Subject: res_stasis_snoop: Fix snoop crash X-Git-Tag: 18.17.0-rc1~21 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=2f36ab7978f09f541f04f084a74adcf339beac75;p=thirdparty%2Fasterisk.git res_stasis_snoop: Fix snoop crash Added NULL pointer check and channel lock to prevent resource release while the chanspy is processing. ASTERISK-29604 Change-Id: Ibdc675f98052da32333b19685b1708a3751b6d24 --- diff --git a/res/res_stasis_snoop.c b/res/res_stasis_snoop.c index 70cdd7cf17..12964cca00 100644 --- a/res/res_stasis_snoop.c +++ b/res/res_stasis_snoop.c @@ -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);