From 9aa4e53434ee0a0a239b584a39ecfaec01ac2da8 Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Fri, 25 Jan 2019 11:52:06 +0100 Subject: [PATCH] file/swf: fix undefined int behaviour Fix warnings by the undefined sanitizer. --- src/util-file-swf-decompression.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/src/util-file-swf-decompression.c b/src/util-file-swf-decompression.c index aeb6fdfdf6..685f982097 100644 --- a/src/util-file-swf-decompression.c +++ b/src/util-file-swf-decompression.c @@ -50,15 +50,20 @@ uint32_t FileGetSwfDecompressedLen(const uint8_t *buffer, return 0; } - int a = buffer[4]; - int b = buffer[5]; - int c = buffer[6]; - int d = buffer[7]; - - uint32_t value = (((a & 0xff) << 24) | ((b & 0xff) << 16) | ((c & 0xff) << 8) | (d & 0xff)); - - uint32_t len = (((value >> 24) & 0x000000FF) | ((value >> 8) & 0x0000FF00) | - ((value << 8) & 0x00FF0000) | ((value << 24) & 0xFF000000)); + uint32_t a = buffer[4]; + uint32_t b = buffer[5]; + uint32_t c = buffer[6]; + uint32_t d = buffer[7]; + + uint32_t value = (((a & 0xff) << 24UL) | + ((b & 0xff) << 16UL) | + ((c & 0xff) << 8UL) | + (d & 0xff)); + + uint32_t len = (((value >> 24) & 0x000000FFUL) | + ((value >> 8) & 0x0000FF00UL) | + ((value << 8) & 0x00FF0000UL) | + ((value << 24) & 0xFF000000UL)); return MIN(MAX_SWF_DECOMPRESSED_LEN, len); } -- 2.47.2