mirror of
https://github.com/webmproject/libwebp.git
synced 2025-08-28 14:52:28 +02:00
Add fbounds-safety annotations for code_lengths
.
Reasoning: The compiler reported an error in `src/utils/huffman_utils.c` at line 230 because the array parameter `code_lengths` decayed to a `__single` pointer, which disallows pointer arithmetic. The parameter `code_lengths_size` represents the size of the `code_lengths` array. To fix this, the `code_lengths` parameter in the definition of `VP8LBuildHuffmanTable` (line 230) and its declaration in `src/utils/huffman_utils.h` (line 108) were annotated with `WEBP_COUNTED_BY(code_lengths_size)`. Bug: 432511821 Change-Id: Id0b32ca283bba5938320abbdbe61846e2d538c5d
This commit is contained in:
@@ -227,7 +227,9 @@ static int BuildHuffmanTable(HuffmanCode* const root_table, int root_bits,
|
||||
// Cut-off value for switching between heap and stack allocation.
|
||||
#define SORTED_SIZE_CUTOFF 512
|
||||
int VP8LBuildHuffmanTable(HuffmanTables* const root_table, int root_bits,
|
||||
const int code_lengths[], int code_lengths_size) {
|
||||
const int WEBP_COUNTED_BY(code_lengths_size)
|
||||
code_lengths[],
|
||||
int code_lengths_size) {
|
||||
const int total_size =
|
||||
BuildHuffmanTable(NULL, root_bits, code_lengths, code_lengths_size, NULL);
|
||||
assert(code_lengths_size <= MAX_CODE_LENGTHS_SIZE);
|
||||
|
@@ -105,10 +105,10 @@ void VP8LHtreeGroupsFree(HTreeGroup* const htree_groups);
|
||||
// the huffman table.
|
||||
// Returns built table size or 0 in case of error (invalid tree or
|
||||
// memory error).
|
||||
WEBP_NODISCARD int VP8LBuildHuffmanTable(HuffmanTables* const root_table,
|
||||
int root_bits,
|
||||
const int code_lengths[],
|
||||
int code_lengths_size);
|
||||
WEBP_NODISCARD int VP8LBuildHuffmanTable(
|
||||
HuffmanTables* const root_table, int root_bits,
|
||||
const int WEBP_COUNTED_BY(code_lengths_size) code_lengths[],
|
||||
int code_lengths_size);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
|
Reference in New Issue
Block a user