https://github.com/libsdl-org/libtiff/commit/1adf4fa889f1b70a5b2e9b0bebd6d756399d5c16
From 1adf4fa889f1b70a5b2e9b0bebd6d756399d5c16 Mon Sep 17 00:00:00 2001
From: Even Rouault <[EMAIL REDACTED]>
Date: Sun, 6 Feb 2022 13:09:12 +0100
Subject: [PATCH] LogLuvEncode32(): avoid undefined behaviour of left shift on
a signed integer
---
libtiff/tif_luv.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libtiff/tif_luv.c b/libtiff/tif_luv.c
index 4aa5ee98..72ab3668 100644
--- a/libtiff/tif_luv.c
+++ b/libtiff/tif_luv.c
@@ -579,7 +579,7 @@ LogLuvEncode32(TIFF* tif, uint8_t* bp, tmsize_t cc, uint16_t s)
uint32_t* tp;
uint32_t b;
tmsize_t occ;
- int rc=0, mask;
+ int rc=0;
tmsize_t beg;
(void)s;
@@ -603,6 +603,7 @@ LogLuvEncode32(TIFF* tif, uint8_t* bp, tmsize_t cc, uint16_t s)
op = tif->tif_rawcp;
occ = tif->tif_rawdatasize - tif->tif_rawcc;
for (shft = 24; shft >= 0; shft -=8) {
+ const uint32_t mask = 0xffU << shft; /* find next run */
for (i = 0; i < npixels; i += rc) {
if (occ < 4) {
tif->tif_rawcp = op;
@@ -612,7 +613,6 @@ LogLuvEncode32(TIFF* tif, uint8_t* bp, tmsize_t cc, uint16_t s)
op = tif->tif_rawcp;
occ = tif->tif_rawdatasize - tif->tif_rawcc;
}
- mask = 0xff << shft; /* find next run */
for (beg = i; beg < npixels; beg += rc) {
b = tp[beg] & mask;
rc = 1;