Skip to content

Commit

Permalink
liblzma: Silence a warning from Coverity static analysis
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
Larhzu authored and thesamesam committed Apr 20, 2024
1 parent 982dd6c commit f437deb
Showing 1 changed file with 5 additions and 7 deletions.
12 changes: 5 additions & 7 deletions src/liblzma/simple/x86.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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)
Expand Down

0 comments on commit f437deb

Please sign in to comment.