libtiff: Merge branch 'tiffcrop_coverity_20240723' into 'master'

From 8a7a48d7a645992ca83062b3a1873c951661e2b3 Mon Sep 17 00:00:00 2001
From: Lee Howard <[EMAIL REDACTED]>
Date: Sun, 11 Aug 2024 16:01:07 +0000
Subject: [PATCH] Attempt to address tiffcrop Coverity scan issues 1605444,
 1605445, and 1605449.

---
 tools/tiffcrop.c | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/tools/tiffcrop.c b/tools/tiffcrop.c
index f837b6da..7f49fbc6 100644
--- a/tools/tiffcrop.c
+++ b/tools/tiffcrop.c
@@ -5570,7 +5570,14 @@ static int readSeparateStripsIntoBuffer(TIFF *in, uint8_t *obuf,
             buff = srcbuffs[s];
             strip = (s * strips_per_sample) + j;
             bytes_read = TIFFReadEncodedStrip(in, strip, buff, stripsize);
-            rows_this_strip = (uint32_t)(bytes_read / src_rowsize);
+            if (bytes_read < 0)
+            {
+                rows_this_strip = 0;
+            }
+            else
+            {
+                rows_this_strip = (uint32_t)(bytes_read / src_rowsize);
+            }
             if (bytes_read < 0 && !ignore)
             {
                 TIFFError(TIFFFileName(in),
@@ -5999,7 +6006,7 @@ static int computeInputPixelOffsets(struct crop_mask *crop,
             rmargin = _TIFFClampDoubleToUInt32(crop->margins[3] * scale * xres);
         }
 
-        if ((lmargin + rmargin) > image->width)
+        if (lmargin == 0xFFFFFFFFU || rmargin == 0xFFFFFFFFU || (lmargin + rmargin) > image->width)
         {
             TIFFError("computeInputPixelOffsets",
                       "Combined left and right margins exceed image width");
@@ -6007,7 +6014,7 @@ static int computeInputPixelOffsets(struct crop_mask *crop,
             rmargin = (uint32_t)0;
             return (-1);
         }
-        if ((tmargin + bmargin) > image->length)
+        if (tmargin == 0xFFFFFFFFU || bmargin == 0xFFFFFFFFU || (tmargin + bmargin) > image->length)
         {
             TIFFError("computeInputPixelOffsets",
                       "Combined top and bottom margins exceed image length");
@@ -6637,14 +6644,14 @@ static int computeOutputPixelOffsets(struct crop_mask *crop,
                                                ((image->bps + 7) / 8));
         }
 
-        if ((hmargin * 2.0) > (pwidth * page->hres))
+        if (hmargin == 0xFFFFFFFFU || (hmargin * 2.0) > (pwidth * page->hres))
         {
             TIFFError("computeOutputPixelOffsets",
                       "Combined left and right margins exceed page width");
             hmargin = (uint32_t)0;
             return (-1);
         }
-        if ((vmargin * 2.0) > (plength * page->vres))
+        if (vmargin == 0xFFFFFFFFU || (vmargin * 2.0) > (plength * page->vres))
         {
             TIFFError("computeOutputPixelOffsets",
                       "Combined top and bottom margins exceed page length");