readelf: nds32 specific decoding
* readelf.c (process_nds32_specific): Check size of .nds32_e_flags section. Don't assume endian of host matches nds32 target. Free buffer.
This commit is contained in:
parent
c3bf7d31de
commit
9c7b8e9b92
|
@ -1,3 +1,9 @@
|
|||
2020-05-04 Alan Modra <amodra@gmail.com>
|
||||
|
||||
* readelf.c (process_nds32_specific): Check size of .nds32_e_flags
|
||||
section. Don't assume endian of host matches nds32 target. Free
|
||||
buffer.
|
||||
|
||||
2020-05-01 Alan Modra <amodra@gmail.com>
|
||||
Haim Shimonovich <Haim.Shimonovich@ceva-dsp.com>
|
||||
|
||||
|
|
|
@ -17481,18 +17481,21 @@ process_nds32_specific (Filedata * filedata)
|
|||
Elf_Internal_Shdr *sect = NULL;
|
||||
|
||||
sect = find_section (filedata, ".nds32_e_flags");
|
||||
if (sect != NULL)
|
||||
if (sect != NULL && sect->sh_size >= 4)
|
||||
{
|
||||
unsigned int *flag;
|
||||
unsigned char *buf;
|
||||
unsigned int flag;
|
||||
|
||||
printf ("\nNDS32 elf flags section:\n");
|
||||
flag = get_data (NULL, filedata, sect->sh_offset, 1,
|
||||
sect->sh_size, _("NDS32 elf flags section"));
|
||||
buf = get_data (NULL, filedata, sect->sh_offset, 1, 4,
|
||||
_("NDS32 elf flags section"));
|
||||
|
||||
if (! flag)
|
||||
if (buf == NULL)
|
||||
return FALSE;
|
||||
|
||||
switch ((*flag) & 0x3)
|
||||
flag = byte_get (buf, 4);
|
||||
free (buf);
|
||||
switch (flag & 0x3)
|
||||
{
|
||||
case 0:
|
||||
printf ("(VEC_SIZE):\tNo entry.\n");
|
||||
|
|
Loading…
Reference in New Issue