In process_file we allocate a bitmap sections to track which sections
we want to (de)compress. This allocates shnum / 8 + 1 unsigned
ints. But an unsigned int can contain more bits than just 8. In all
other places we use WORD_BITS defined as 8U * sizeof (unsigned int).
Also use WORD_BITS to calculate how many unsigned ints we need for the
sections bitmap.
* src/elfcompress.c (process_file): Use shnum / WORD_BITS + 1
to allocate sections.
Signed-off-by: Mark Wielaard <[email protected]>
---
src/elfcompress.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/elfcompress.c b/src/elfcompress.c
index f771b92afabf..630eb54da1c0 100644
--- a/src/elfcompress.c
+++ b/src/elfcompress.c
@@ -424,7 +424,7 @@ process_file (const char *fname)
goto cleanup;
}
- sections = xcalloc (shnum / 8 + 1, sizeof (unsigned int));
+ sections = xcalloc (shnum / WORD_BITS + 1, sizeof (unsigned int));
size_t phnum;
if (elf_getphdrnum (elf, &phnum) != 0)
--
2.53.0