From 891602da970788cb7b1d92400ff7d500b6736d7a Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Fri, 19 Apr 2024 22:04:21 +0300 Subject: [PATCH] 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. (cherry picked from commit 6aa2a6deeba04808a0fe4461396e7fb70277f3d4) --- src/liblzma/simple/x86.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/liblzma/simple/x86.c b/src/liblzma/simple/x86.c index 0e78909c..d72d66d9 100644 --- a/src/liblzma/simple/x86.c +++ b/src/liblzma/simple/x86.c @@ -27,11 +27,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; @@ -68,9 +67,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)