This is the mail archive of the binutils@sourceware.org mailing list for the binutils project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[PATCH v2 4/6] 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/ctf-open.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/libctf/ctf-open.c b/libctf/ctf-open.c
index df735acb40..14f7062590 100644
--- a/libctf/ctf-open.c
+++ b/libctf/ctf-open.c
@@ -856,6 +856,10 @@ init_types (ctf_file_t *fp, ctf_header_t *cth)
 	  if (err != 0 && err != ECTF_STRTAB)
 	    return err;
 	  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);
-- 
2.21.0.237.gd0cfaa883d


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]