Don't return stale data from fbsd_pid_to_exec_file for kernel processes.
For processes without an associated executable (such as kernel processes), the kern.proc.pathname.<pid> system control node returns a length of zero without modifying the user's buffer. Detect this case and return NULL rather than the previous contents of the static buffer 'buf'. gdb/ChangeLog: * fbsd-nat.c (fbsd_pid_to_exec_file) [KERN_PROC_PATHNAME]: Return NULL for an empty pathname.
This commit is contained in:
parent
d2176225dc
commit
b999e2038d
@ -1,3 +1,8 @@
|
||||
2018-01-09 John Baldwin <jhb@FreeBSD.org>
|
||||
|
||||
* fbsd-nat.c (fbsd_pid_to_exec_file) [KERN_PROC_PATHNAME]: Return
|
||||
NULL for an empty pathname.
|
||||
|
||||
2018-01-09 John Baldwin <jhb@FreeBSD.org>
|
||||
|
||||
* fbsd-tdep.c (KVE_STRUCTSIZE, KVE_START, KVE_END, KVE_OFFSET)
|
||||
|
@ -63,7 +63,10 @@ fbsd_pid_to_exec_file (struct target_ops *self, int pid)
|
||||
mib[3] = pid;
|
||||
buflen = sizeof buf;
|
||||
if (sysctl (mib, 4, buf, &buflen, NULL, 0) == 0)
|
||||
return buf;
|
||||
/* The kern.proc.pathname.<pid> sysctl returns a length of zero
|
||||
for processes without an associated executable such as kernel
|
||||
processes. */
|
||||
return buflen == 0 ? NULL : buf;
|
||||
#endif
|
||||
|
||||
xsnprintf (name, PATH_MAX, "/proc/%d/exe", pid);
|
||||
|
Loading…
Reference in New Issue
Block a user