[FFmpeg-devel] [PATCH] avcodec/libaomenc: fix use after free of sidedata

Marvin Scholz epirat07 at gmail.com
Wed Nov 27 15:35:40 EET 2024


Move the ff_dovi_configure to happen before ff_encode_add_cpb_side_data
as the former reallocates the sidedata so the pointer returned from
ff_encode_add_cpb_side_data would be invalid.
---
 libavcodec/libaomenc.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
index 0f7571ee7a1..15e244d6d6a 100644
--- a/libavcodec/libaomenc.c
+++ b/libavcodec/libaomenc.c
@@ -987,18 +987,18 @@ static av_cold int aom_init(AVCodecContext *avctx,
                  (unsigned char*)1);
 
     if (codec_caps & AOM_CODEC_CAP_HIGHBITDEPTH)
         ctx->rawimg.bit_depth = enccfg.g_bit_depth;
 
-    cpb_props = ff_encode_add_cpb_side_data(avctx);
-    if (!cpb_props)
-        return AVERROR(ENOMEM);
-
     ctx->dovi.logctx = avctx;
     if ((res = ff_dovi_configure(&ctx->dovi, avctx)) < 0)
         return res;
 
+    cpb_props = ff_encode_add_cpb_side_data(avctx);
+    if (!cpb_props)
+        return AVERROR(ENOMEM);
+
     if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) {
         const AVBitStreamFilter *filter = av_bsf_get_by_name("extract_extradata");
         int ret;
 
         if (!filter) {

base-commit: 78c4d6c136e10222a0b0ddff639c836f295a9029
-- 
2.47.0


More information about the ffmpeg-devel mailing list