diff mbox series

[FFmpeg-devel,2/2] avcodec/wrapped_avframe: Don't presume AVPacket to be writable

Message ID DB6PR0101MB22146D546F6FC907244DCA2A8F8C9@DB6PR0101MB2214.eurprd01.prod.exchangelabs.com
State Accepted
Commit d72a671c601ae1c7969ab17e2f931b6807add3b9
Headers show
Series [FFmpeg-devel,1/2] avcodec/wrapped_avframe: Don't leak frame metadata, side-data | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Andreas Rheinhardt July 18, 2022, 5:34 p.m. UTC
It need not be writable; in fact, it is often not writable even if
the packet sent to the decoder was writable, because the generic code
calls av_packet_ref() on it. It is never writable if a user
drains the decoder after every packet, because in this case the decode
callback is called from avcodec_send_packet().

Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
---
 libavcodec/wrapped_avframe.c | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)
diff mbox series

Patch

diff --git a/libavcodec/wrapped_avframe.c b/libavcodec/wrapped_avframe.c
index e2f27f91a3..c89cdfd1e8 100644
--- a/libavcodec/wrapped_avframe.c
+++ b/libavcodec/wrapped_avframe.c
@@ -92,7 +92,9 @@  static int wrapped_avframe_decode(AVCodecContext *avctx, AVFrame *out,
 
     in  = (AVFrame*)pkt->data;
 
-    av_frame_move_ref(out, in);
+    err = av_frame_ref(out, in);
+    if (err < 0)
+        return err;
 
     err = ff_decode_frame_props(avctx, out);
     if (err < 0)