[FFmpeg-devel] [PATCH 3/3] avfilter/vf_libopencv: fix resource leak in read_shape_frame_filter
Steven Liu
lingjiujianke at gmail.com
Wed Jan 11 04:01:00 EET 2017
2017-01-10 19:45 GMT+08:00 Steven Liu <lq at chinaffmpeg.org>:
> CID: 1324298
> add a label when error goto the label to release resource
>
> Signed-off-by: Steven Liu <lq at chinaffmpeg.org>
> ---
> libavfilter/vf_libopencv.c | 14 ++++++++++----
> 1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/libavfilter/vf_libopencv.c b/libavfilter/vf_libopencv.c
> index f8ae9d5..8128030 100644
> --- a/libavfilter/vf_libopencv.c
> +++ b/libavfilter/vf_libopencv.c
> @@ -157,7 +157,8 @@ static int read_shape_from_file(int *cols, int *rows,
> int **values, const char *
> if (buf[i] == '\n') {
> if (*rows == INT_MAX) {
> av_log(log_ctx, AV_LOG_ERROR, "Overflow on the number of
> rows in the file\n");
> - return AVERROR_INVALIDDATA;
> + ret = AVERROR_INVALIDDATA;
> + goto end;
> }
> ++(*rows);
> *cols = FFMAX(*cols, w);
> @@ -171,10 +172,13 @@ static int read_shape_from_file(int *cols, int
> *rows, int **values, const char *
> if (*rows > (SIZE_MAX / sizeof(int) / *cols)) {
> av_log(log_ctx, AV_LOG_ERROR, "File with size %dx%d is too big\n",
> *rows, *cols);
> - return AVERROR_INVALIDDATA;
> + ret = AVERROR_INVALIDDATA;
> + goto end;
> + }
> + if (!(*values = av_mallocz_array(sizeof(int) * *rows, *cols))) {
> + ret = AVERROR(ENOMEM);
> + goto end;
> }
> - if (!(*values = av_mallocz_array(sizeof(int) * *rows, *cols)))
> - return AVERROR(ENOMEM);
>
> /* fill *values */
> p = buf;
> @@ -188,6 +192,8 @@ static int read_shape_from_file(int *cols, int *rows,
> int **values, const char *
> (*values)[*cols*i + j] = !!av_isgraph(*(p++));
> }
> }
> +
> +end:
> av_file_unmap(buf, size);
>
> #ifdef DEBUG
> --
> 2.10.1.382.ga23ca1b.dirty
>
>
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>
applied!
Thanks
More information about the ffmpeg-devel
mailing list