rmodtool: Increase limit on number of symbols
An internal index `i` was previously allocated as Elf64_Half which is uint16_t. Bumping to uint64_t increases the number of allowed symbols and prevents a segfault in processing a larger ramstage.debug file. Also introduce a separate counter for the number of sections. Change-Id: I9ad2f64c452cef2e7bf957f766600891cb5ae798 Signed-off-by: Damien Zammit <damien@zamaudio.com> Reviewed-on: https://review.coreboot.org/21360 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Reviewed-by: Aaron Durbin <adurbin@chromium.org> Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
This commit is contained in:
parent
7bc0e42749
commit
0025247171
|
@ -435,7 +435,8 @@ symtab_read(const struct buffer *in, struct parsed_elf *pelf,
|
||||||
{
|
{
|
||||||
Elf64_Ehdr *ehdr;
|
Elf64_Ehdr *ehdr;
|
||||||
Elf64_Shdr *shdr;
|
Elf64_Shdr *shdr;
|
||||||
Elf64_Half i;
|
Elf64_Half shnum;
|
||||||
|
Elf64_Xword i;
|
||||||
Elf64_Xword nsyms;
|
Elf64_Xword nsyms;
|
||||||
Elf64_Sym *sym;
|
Elf64_Sym *sym;
|
||||||
struct buffer b;
|
struct buffer b;
|
||||||
|
@ -443,17 +444,17 @@ symtab_read(const struct buffer *in, struct parsed_elf *pelf,
|
||||||
ehdr = &pelf->ehdr;
|
ehdr = &pelf->ehdr;
|
||||||
|
|
||||||
shdr = NULL;
|
shdr = NULL;
|
||||||
for (i = 0; i < ehdr->e_shnum; i++) {
|
for (shnum = 0; shnum < ehdr->e_shnum; shnum++) {
|
||||||
if (pelf->shdr[i].sh_type != SHT_SYMTAB)
|
if (pelf->shdr[shnum].sh_type != SHT_SYMTAB)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (shdr != NULL) {
|
if (shdr != NULL) {
|
||||||
ERROR("Multiple symbol sections found. %u and %u\n",
|
ERROR("Multiple symbol sections found. %u and %u\n",
|
||||||
(unsigned int)(shdr - pelf->shdr), i);
|
(unsigned int)(shdr - pelf->shdr), shnum);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
shdr = &pelf->shdr[i];
|
shdr = &pelf->shdr[shnum];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (shdr == NULL) {
|
if (shdr == NULL) {
|
||||||
|
|
Loading…
Reference in New Issue