From 3380c0d27df1e07f009e114da98fb8033c2ce33d Mon Sep 17 00:00:00 2001 From: Leo Izen Date: Tue, 21 Jan 2025 07:34:01 -0500 Subject: [PATCH] avutil/frame: check return value for cropping offsets This function can return AVERROR_BUG in theory if something went wrong, but so can the caller, so we should propagate that error message upward in that case. Signed-off-by: Leo Izen --- libavutil/frame.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/libavutil/frame.c b/libavutil/frame.c index 00d0bab8b5..992115e04f 100644 --- a/libavutil/frame.c +++ b/libavutil/frame.c @@ -1095,6 +1095,7 @@ int av_frame_apply_cropping(AVFrame *frame, int flags) { const AVPixFmtDescriptor *desc; size_t offsets[4]; + int ret; if (!(frame->width > 0 && frame->height > 0)) return AVERROR(EINVAL); @@ -1122,7 +1123,9 @@ int av_frame_apply_cropping(AVFrame *frame, int flags) } /* calculate the offsets for each plane */ - calc_cropping_offsets(offsets, frame, desc); + ret = calc_cropping_offsets(offsets, frame, desc); + if (ret < 0) + return ret; /* adjust the offsets to avoid breaking alignment */ if (!(flags & AV_FRAME_CROP_UNALIGNED)) { @@ -1141,7 +1144,9 @@ int av_frame_apply_cropping(AVFrame *frame, int flags) if (min_log2_align < 5 && log2_crop_align != INT_MAX) { frame->crop_left &= ~((1 << (5 + log2_crop_align - min_log2_align)) - 1); - calc_cropping_offsets(offsets, frame, desc); + ret = calc_cropping_offsets(offsets, frame, desc); + if (ret < 0) + return ret; } }