[FFmpeg-devel] [PATCH 3/4] avcodec/libxvid: Fix leak of AVPacket on error
James Almer
jamrial at gmail.com
Fri Mar 19 03:27:43 EET 2021
On 3/18/2021 9:52 PM, Andreas Rheinhardt wrote:
> Regression since 2101b99777860c853ca2321031eb3f4047dc5894.
> Fixes Coverity issue #1473721.
>
> Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt at gmail.com>
> ---
> libavcodec/libxvid.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/libavcodec/libxvid.c b/libavcodec/libxvid.c
> index 7dc6859571..25b0025d5f 100644
> --- a/libavcodec/libxvid.c
> +++ b/libavcodec/libxvid.c
> @@ -692,8 +692,10 @@ FF_ENABLE_DEPRECATION_WARNINGS
> return AVERROR(ENOMEM);
>
> picture = av_frame_alloc();
> - if (!picture)
> + if (!picture) {
> + av_packet_free(&packet);
> return AVERROR(ENOMEM);
> + }
>
> xerr = xvid_encore(NULL, XVID_ENC_CREATE, &xvid_enc_create, NULL);
> if( xerr ) {
You could also combine both checks, like so:
> diff --git a/libavcodec/libxvid.c b/libavcodec/libxvid.c
> index 7dc6859571..22c6025377 100644
> --- a/libavcodec/libxvid.c
> +++ b/libavcodec/libxvid.c
> @@ -688,12 +688,12 @@ FF_ENABLE_DEPRECATION_WARNINGS
> int size, got_packet, ret;
>
> packet = av_packet_alloc();
> - if (!packet)
> - return AVERROR(ENOMEM);
> -
> picture = av_frame_alloc();
> - if (!picture)
> + if (!picture || !packet) {
> + av_packet_free(&packet);
> + av_frame_free(&picture);
> return AVERROR(ENOMEM);
> + }
>
> xerr = xvid_encore(NULL, XVID_ENC_CREATE, &xvid_enc_create, NULL);
> if( xerr ) {
But it LGTM either way.
More information about the ffmpeg-devel
mailing list