1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-10 01:18:15 +03:00

compression/huffman: double check distance in matches (CID 1517278)

Because we just wrote the intermediate representation to have no zero
distances, we can be sure it doesn't, but Coverity doesn't know. If
distance is zero, `bitlen_nonzero_16(distance)` would be bad.

   CID 1517278 (#1 of 1): Bad bit shift operation
   (BAD_SHIFT)41. large_shift: In expression 1 << code_dist, left
   shifting by more than 31 bits has undefined behavior. The shift
   amount, code_dist, is 65535.

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Jeremy Allison <jra@samba.org>
This commit is contained in:
Douglas Bagnall 2022-12-07 09:17:17 +13:00 committed by Jeremy Allison
parent 6b4d94c987
commit 628f14c149

View File

@ -1062,6 +1062,9 @@ static ssize_t write_compressed_bytes(uint16_t symbol_values[512],
} else {
return LZXPRESS_ERROR;
}
if (unlikely(distance == 0)) {
return LZXPRESS_ERROR;
}
/* len has already had 3 subtracted */
if (len >= 15) {
/*