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 6aa2a6deeb)
This commit is contained in:
Lasse Collin 2024-04-19 22:04:21 +03:00
parent 4019b012f2
commit 6e210d5766
1 changed files with 5 additions and 7 deletions

View File

@ -26,11 +26,10 @@ static size_t
x86_code(void *simple_ptr, uint32_t now_pos, bool is_encoder, x86_code(void *simple_ptr, uint32_t now_pos, bool is_encoder,
uint8_t *buffer, size_t size) uint8_t *buffer, size_t size)
{ {
static const bool MASK_TO_ALLOWED_STATUS[8] static const bool MASK_TO_ALLOWED_STATUS[5]
= { true, true, true, false, true, false, false, false }; = { true, true, true, false, true };
static const uint32_t MASK_TO_BIT_NUMBER[8] static const uint32_t MASK_TO_BIT_NUMBER[5] = { 0, 1, 2, 2, 3 };
= { 0, 1, 2, 2, 3, 3, 3, 3 };
lzma_simple_x86 *simple = simple_ptr; lzma_simple_x86 *simple = simple_ptr;
uint32_t prev_mask = simple->prev_mask; 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]; b = buffer[buffer_pos + 4];
if (Test86MSByte(b) if (Test86MSByte(b) && (prev_mask >> 1) <= 4
&& MASK_TO_ALLOWED_STATUS[(prev_mask >> 1) & 0x7] && MASK_TO_ALLOWED_STATUS[(prev_mask >> 1)]) {
&& (prev_mask >> 1) < 0x10) {
uint32_t src = ((uint32_t)(b) << 24) uint32_t src = ((uint32_t)(b) << 24)
| ((uint32_t)(buffer[buffer_pos + 3]) << 16) | ((uint32_t)(buffer[buffer_pos + 3]) << 16)