[binutils-gdb] Use KF_PATH to verify the size of a struct kinfo_file.

John Baldwin jhb@sourceware.org
Tue Sep 18 21:19:00 GMT 2018


https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=9f235e09e4d3dc6820e2d667200fe09b3e73b623

commit 9f235e09e4d3dc6820e2d667200fe09b3e73b623
Author: John Baldwin <jhb@FreeBSD.org>
Date:   Tue Sep 18 14:05:47 2018 -0700

    Use KF_PATH to verify the size of a struct kinfo_file.
    
    fbsd_core_vnode_path needs to use the offset of the kf_path member of
    struct kinfo_file as the minimum size of a struct kinfo_file object.
    However, it was using KVE_PATH instead due to a copy and paste bug.
    
    While here, fix another copy and paste bug in the error message for a
    truncated kinfo_file object.
    
    gdb/ChangeLog:
    
    	* fbsd-tdep.c (fbsd_core_vnode_path): Use KF_PATH instead of
    	KVE_PATH.

Diff:
---
 gdb/ChangeLog   | 5 +++++
 gdb/fbsd-tdep.c | 6 +++---
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 328d48e..2d9316f 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2018-09-18  John Baldwin  <jhb@FreeBSD.org>
+
+	* fbsd-tdep.c (fbsd_core_vnode_path): Use KF_PATH instead of
+	KVE_PATH.
+
 2018-09-18  Tom Tromey  <tom@tromey.com>
 
 	* compile/compile-object-load.c (struct
diff --git a/gdb/fbsd-tdep.c b/gdb/fbsd-tdep.c
index ed43087..48544b5 100644
--- a/gdb/fbsd-tdep.c
+++ b/gdb/fbsd-tdep.c
@@ -781,13 +781,13 @@ fbsd_core_vnode_path (struct gdbarch *gdbarch, int fd)
   /* Skip over the structure size.  */
   descdata += 4;
 
-  while (descdata + KVE_PATH < descend)
+  while (descdata + KF_PATH < descend)
     {
       ULONGEST structsize;
 
       structsize = bfd_get_32 (core_bfd, descdata + KF_STRUCTSIZE);
-      if (structsize < KVE_PATH)
-	error (_("malformed core note - vmmap entry too small"));
+      if (structsize < KF_PATH)
+	error (_("malformed core note - file structure too small"));
 
       if (bfd_get_32 (core_bfd, descdata + KF_TYPE) == KINFO_FILE_TYPE_VNODE
 	  && bfd_get_signed_32 (core_bfd, descdata + KF_FD) == fd)



More information about the Gdb-cvs mailing list