[FFmpeg-devel] [PATCH] jpeg2000dec: fix memleaks in error cases in jpeg2000_decode_frame()

Nicolas BERTRAND nicoinattendu at gmail.com
Mon May 6 22:32:05 CEST 2013


Le 06/05/13 22:11, Michael Niedermayer a écrit :
> Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> ---
>   libavcodec/jpeg2000dec.c |   11 +++++++----
>   1 file changed, 7 insertions(+), 4 deletions(-)
>
> diff --git a/libavcodec/jpeg2000dec.c b/libavcodec/jpeg2000dec.c
> index ac69d7e..63405c4 100644
> --- a/libavcodec/jpeg2000dec.c
> +++ b/libavcodec/jpeg2000dec.c
> @@ -1288,26 +1288,29 @@ static int jpeg2000_decode_frame(AVCodecContext *avctx, void *data,
>           return -1;
>       }
>       if (ret = jpeg2000_read_main_headers(s))
> -        return ret;
> +        goto fail;
>   
>       /* get picture buffer */
>       if ((ret = ff_thread_get_buffer(avctx, &frame, 0)) < 0) {
>           av_log(avctx, AV_LOG_ERROR, "ff_thread_get_buffer() failed.\n");
> -        return ret;
> +        goto fail;
>       }
>       picture->pict_type = AV_PICTURE_TYPE_I;
>       picture->key_frame = 1;
>   
>       if (ret = jpeg2000_read_bitstream_packets(s))
> -        return ret;
> +        goto fail;
>       for (tileno = 0; tileno < s->numXtiles * s->numYtiles; tileno++)
>           if (ret = jpeg2000_decode_tile(s, s->tile + tileno, picture))
> -            return ret;
> +            goto fail;
>       jpeg2000_dec_cleanup(s);
>   
>       *got_frame = 1;
>   
>       return s->buf - s->buf_start;
> +fail:
> +    jpeg2000_dec_cleanup(s);
> +    return ret;
>   }
>   
>   #define OFFSET(x) offsetof(Jpeg2000DecoderContext, x)
LVGTM :)



More information about the ffmpeg-devel mailing list