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.
This commit is contained in:
John Baldwin 2018-09-18 14:05:47 -07:00
parent 5031d0ae0b
commit 9f235e09e4
2 changed files with 8 additions and 3 deletions

View File

@ -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

View File

@ -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)