[FFmpeg-devel] [PATCH] avcodec/hw_base_encode: fix use after free on close
Alexander Strasser
eclipse7 at gmx.net
Fri Oct 18 11:08:10 EEST 2024
On 2024-10-17 20:23 +0200, Marvin Scholz wrote:
> The way the linked list of images was freed caused a
> use after free, by accessing pic->next after pic was
> already freed.
>
> Regression from 48a1a12968345bf673db1e1cbb5c64bd3529c50c
>
> Fix CID1633236
> ---
> libavcodec/hw_base_encode.c | 6 +++---
> 1 file changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/libavcodec/hw_base_encode.c b/libavcodec/hw_base_encode.c
> index 912c707a68f..4d8bf4fe71d 100644
> --- a/libavcodec/hw_base_encode.c
> +++ b/libavcodec/hw_base_encode.c
> @@ -802,14 +802,14 @@ int ff_hw_base_encode_init(AVCodecContext *avctx, FFHWBaseEncodeContext *ctx)
> return 0;
> }
>
> int ff_hw_base_encode_close(FFHWBaseEncodeContext *ctx)
> {
> - FFHWBaseEncodePicture *pic;
> -
> - for (pic = ctx->pic_start; pic; pic = pic->next)
> + for (FFHWBaseEncodePicture *pic = ctx->pic_start, *next_pic = pic; pic; pic = next_pic) {
> + next_pic = pic->next;
> base_encode_pic_free(pic);
> + }
LGTM
I think it would be better to name next_pic just next.
So the line would look like:
next = pic->next;
That would be in line with the other 2 similar loops in the file.
Alexander
More information about the ffmpeg-devel
mailing list