libctf: unidentified type kinds on open are a sign of file corruption
authorNick Alcock <nick.alcock@oracle.com>
Wed, 19 Jun 2019 11:27:18 +0000 (12:27 +0100)
committerNick Alcock <nick.alcock@oracle.com>
Fri, 21 Jun 2019 12:04:02 +0000 (13:04 +0100)
commit0b4fa56e07639ed28cbbcd890868e01a82a5e45c
tree4e0436f0ee4b301e7bb7c302708bd3a84196fb91
parent364620bf636a0a961892c9274616f8d5ad85eecc
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.
libctf/ChangeLog
libctf/ctf-open.c