libctf: error out on corrupt CTF with invalid header flags

If corrupt CTF with invalid header flags is passed in, return the new
error ECTF_FLAGS.

include/
	* ctf-api.h (ECTF_FLAGS): New.
	(ECTF_NERR): Adjust.
	* ctf.h (CTF_F_MAX): New.
libctf/
	* ctf-open.c (ctf_bufopen_internal): Diagnose invalid flags.
This commit is contained in:
Nick Alcock
2020-06-03 17:31:44 +01:00
parent 67d4cc671b
commit ec388c16cd
5 changed files with 18 additions and 3 deletions

View File

@@ -1,3 +1,7 @@
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
* ctf-open.c (ctf_bufopen_internal): Diagnose invalid flags.
2020-07-22 Nick Alcock <nick.alcock@oracle.com>
ctf-decls.h (ctf_qsort_compar_thunk): Fix arg passing.

View File

@@ -1384,6 +1384,9 @@ ctf_bufopen_internal (const ctf_sect_t *ctfsect, const ctf_sect_t *symsect,
if (pp->ctp_version < CTF_VERSION_3)
hdrsz = sizeof (ctf_header_v2_t);
if (_libctf_unlikely_ (pp->ctp_flags > CTF_F_MAX))
return (ctf_set_open_errno (errp, ECTF_FLAGS));
if (ctfsect->cts_size < hdrsz)
return (ctf_set_open_errno (errp, ECTF_NOCTFBUF));