From 5aa2239c4b964f0d2f477ca3d89fb5aa9bd4a93b Mon Sep 17 00:00:00 2001 From: He Junyan Date: Wed, 26 Jul 2023 16:27:43 +0800 Subject: [PATCH] codecs: AV1: Ensure current picture and frame to NULL before return The current code fails to clear the current picture and frame pointer if some flow error such as EOS happens. This causes the double free issue in gst_av1_decoder_reset(). Part-of: --- .../gst-plugins-bad/gst-libs/gst/codecs/gstav1decoder.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/subprojects/gst-plugins-bad/gst-libs/gst/codecs/gstav1decoder.c b/subprojects/gst-plugins-bad/gst-libs/gst/codecs/gstav1decoder.c index 95fee9365d..5d7782cb80 100644 --- a/subprojects/gst-plugins-bad/gst-libs/gst/codecs/gstav1decoder.c +++ b/subprojects/gst-plugins-bad/gst-libs/gst/codecs/gstav1decoder.c @@ -787,15 +787,16 @@ out: gst_av1_decoder_drain_output_queue (self, priv->preferred_output_delay, &output_ret); + + priv->current_picture = NULL; + priv->current_frame = NULL; + if (output_ret != GST_FLOW_OK) { GST_DEBUG_OBJECT (self, "Output returned %s", gst_flow_get_name (output_ret)); return output_ret; } - priv->current_picture = NULL; - priv->current_frame = NULL; - if (ret == GST_FLOW_ERROR) { GST_VIDEO_DECODER_ERROR (decoder, 1, STREAM, DECODE, ("Failed to handle the frame %d", frame->system_frame_number),