diff options
author | LuMingYin <lumingyindetect@163.com> | 2024-04-13 11:57:00 +0800 |
---|---|---|
committer | Zhao Zhili <zhilizhao@tencent.com> | 2024-05-20 23:57:45 +0800 |
commit | 3f691c0c6a8cbb293740df4f3bba06a8f5d5fba5 (patch) | |
tree | 0401288af3775aeb2563d14236d4dee3b3b917ed /libavfilter | |
parent | 14f9e47314ab70a2c786cb040ca0ca2fc1a0e163 (diff) | |
download | ffmpeg-3f691c0c6a8cbb293740df4f3bba06a8f5d5fba5.tar.gz |
libavfilter/vf_curves: fix a memory leak on error path
Signed-off-by: LuMingYin <lumingyindetect@163.com>
Signed-off-by: Zhao Zhili <zhilizhao@tencent.com>
Diffstat (limited to 'libavfilter')
-rw-r--r-- | libavfilter/vf_curves.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/libavfilter/vf_curves.c b/libavfilter/vf_curves.c index 3e4a42bab3..97f284db22 100644 --- a/libavfilter/vf_curves.c +++ b/libavfilter/vf_curves.c @@ -182,20 +182,22 @@ static int parse_points_str(AVFilterContext *ctx, struct keypoint **points, cons if (point->x < 0 || point->x > 1 || point->y < 0 || point->y > 1) { av_log(ctx, AV_LOG_ERROR, "Invalid key point coordinates (%f;%f), " "x and y must be in the [0;1] range.\n", point->x, point->y); + av_free(point); return AVERROR(EINVAL); } - if (!*points) - *points = point; if (last) { if ((int)(last->x * scale) >= (int)(point->x * scale)) { av_log(ctx, AV_LOG_ERROR, "Key point coordinates (%f;%f) " "and (%f;%f) are too close from each other or not " "strictly increasing on the x-axis\n", last->x, last->y, point->x, point->y); + av_free(point); return AVERROR(EINVAL); } last->next = point; } + if (!*points) + *points = point; last = point; } |