From: Lasse Collin Date: Fri, 19 Apr 2024 19:04:21 +0000 (+0300) Subject: liblzma: Silence a warning from Coverity static analysis X-Git-Tag: v5.7.1alpha~385 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6aa2a6deeba04808a0fe4461396e7fb70277f3d4;p=thirdparty%2Fxz.git liblzma: Silence a warning from Coverity static analysis It is logical why it cannot know for sure that the value has to be at most 4 if it is less than 16. The x86 filter is based on a very old LZMA SDK version. Newer ones have quite a different implementation for the same filter. Thanks to Sam James. --- diff --git a/src/liblzma/simple/x86.c b/src/liblzma/simple/x86.c index 10d70e91..a5d33264 100644 --- a/src/liblzma/simple/x86.c +++ b/src/liblzma/simple/x86.c @@ -26,11 +26,10 @@ static size_t x86_code(void *simple_ptr, uint32_t now_pos, bool is_encoder, uint8_t *buffer, size_t size) { - static const bool MASK_TO_ALLOWED_STATUS[8] - = { true, true, true, false, true, false, false, false }; + static const bool MASK_TO_ALLOWED_STATUS[5] + = { true, true, true, false, true }; - static const uint32_t MASK_TO_BIT_NUMBER[8] - = { 0, 1, 2, 2, 3, 3, 3, 3 }; + static const uint32_t MASK_TO_BIT_NUMBER[5] = { 0, 1, 2, 2, 3 }; lzma_simple_x86 *simple = simple_ptr; uint32_t prev_mask = simple->prev_mask; @@ -67,9 +66,8 @@ x86_code(void *simple_ptr, uint32_t now_pos, bool is_encoder, b = buffer[buffer_pos + 4]; - if (Test86MSByte(b) - && MASK_TO_ALLOWED_STATUS[(prev_mask >> 1) & 0x7] - && (prev_mask >> 1) < 0x10) { + if (Test86MSByte(b) && (prev_mask >> 1) <= 4 + && MASK_TO_ALLOWED_STATUS[(prev_mask >> 1)]) { uint32_t src = ((uint32_t)(b) << 24) | ((uint32_t)(buffer[buffer_pos + 3]) << 16)