From aac17486152b90de3f5d22cca1b30de1be6333fb Mon Sep 17 00:00:00 2001 From: Kleis Auke Wolthuizen Date: Sun, 19 Jul 2020 14:37:38 +0200 Subject: [PATCH] Explicitly cast to unsigned int before left-shifting To avoid potential signed integer overflow (undefined behavior), as implicit integer promotion means the operand becomes a (signed) int. --- libvips/foreign/radiance.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/libvips/foreign/radiance.c b/libvips/foreign/radiance.c index c9889b14..431f4c5a 100644 --- a/libvips/foreign/radiance.c +++ b/libvips/foreign/radiance.c @@ -544,9 +544,9 @@ scanline_read_old( VipsSbuf *sbuf, COLR *scanline, int width ) if( scanline[0][RED] == 1 && scanline[0][GRN] == 1 && scanline[0][BLU] == 1 ) { - int i; + guint i; - for( i = scanline[0][EXP] << rshift; + for( i = ((guint32) scanline[0][EXP] << rshift); i > 0 && width > 0; i-- ) { copycolr( scanline[0], scanline[-1] ); scanline += 1;