[FFmpeg-cvslog] avutil/frame: check return value for cropping offsets

Leo Izen git at videolan.org
Tue Jan 28 23:10:19 EET 2025


ffmpeg | branch: master | Leo Izen <leo.izen at gmail.com> | Tue Jan 21 07:34:01 2025 -0500| [3380c0d27df1e07f009e114da98fb8033c2ce33d] | committer: Leo Izen

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 <leo.izen at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3380c0d27df1e07f009e114da98fb8033c2ce33d
---

 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;
         }
     }
 



More information about the ffmpeg-cvslog mailing list