mirror of
https://github.com/espressif/binutils-gdb.git
synced 2025-05-24 02:37:23 +08:00
libctf: unidentified type kinds on open are a sign of file corruption
If we see a CTF type with a kind we do not recognize in its ctt_info during opening, we cannot skip it and continue opening the file: if the type kind is unknown, we do not know how long its vlen is, and we cannot have skipped past it: so if we continue reading we will almost certainly read in part of the vlen as if it were a new ctf_type_t. Avoid this trouble by considering unknown type kinds to be a reason to return ECTF_CORRUPT, just like everything else that reads in type kinds does. libctf/ * ctf-open.c (ctf_types): Fail when unidentified type kinds are seen.
This commit is contained in:
@ -1,3 +1,8 @@
|
|||||||
|
2019-06-19 Nick Alcock <nick.alcock@oracle.com>
|
||||||
|
|
||||||
|
* ctf-open.c (ctf_types): Fail when unidentified type kinds are
|
||||||
|
seen.
|
||||||
|
|
||||||
2019-06-19 Nick Alcock <nick.alcock@oracle.com>
|
2019-06-19 Nick Alcock <nick.alcock@oracle.com>
|
||||||
|
|
||||||
* ctf-open.c (ctf_bufopen): Dump header offsets into the debugging
|
* ctf-open.c (ctf_bufopen): Dump header offsets into the debugging
|
||||||
|
@ -856,6 +856,10 @@ init_types (ctf_file_t *fp, ctf_header_t *cth)
|
|||||||
if (err != 0 && err != ECTF_STRTAB)
|
if (err != 0 && err != ECTF_STRTAB)
|
||||||
return err;
|
return err;
|
||||||
break;
|
break;
|
||||||
|
default:
|
||||||
|
ctf_dprintf ("unhandled CTF kind in endianness conversion -- %x\n",
|
||||||
|
kind);
|
||||||
|
return ECTF_CORRUPT;
|
||||||
}
|
}
|
||||||
|
|
||||||
*xp = (uint32_t) ((uintptr_t) tp - (uintptr_t) fp->ctf_buf);
|
*xp = (uint32_t) ((uintptr_t) tp - (uintptr_t) fp->ctf_buf);
|
||||||
|
Reference in New Issue
Block a user