diff options
author | Joe Marcus Clarke <marcus@FreeBSD.org> | 2008-12-19 20:23:38 +0000 |
---|---|---|
committer | Joe Marcus Clarke <marcus@FreeBSD.org> | 2008-12-19 20:23:38 +0000 |
commit | fa6af338c09e4c25aaae6412c164ec2267e884de (patch) | |
tree | 7f924765ed27856b8e7439a94ab90b623371324d | |
parent | 974e3f18163a96826e1728102021d3df3775e956 (diff) | |
download | src-test2-fa6af338c09e4c25aaae6412c164ec2267e884de.tar.gz src-test2-fa6af338c09e4c25aaae6412c164ec2267e884de.zip |
MFC r186315:
Do not segfault when procstat -f or procstat -v is called on a process not
owned by the current user. If kinfo_getfile() or kinfo_getvmmap() return
NULL, simply exit, and do not try and derefernce the memory.
Approved by: re (kib)
Notes
Notes:
svn path=/releng/7.1/; revision=186340
-rw-r--r-- | usr.bin/procstat/procstat_files.c | 2 | ||||
-rw-r--r-- | usr.bin/procstat/procstat_vm.c | 2 |
2 files changed, 4 insertions, 0 deletions
diff --git a/usr.bin/procstat/procstat_files.c b/usr.bin/procstat/procstat_files.c index fbe5a57b7090..d9a8cdab0970 100644 --- a/usr.bin/procstat/procstat_files.c +++ b/usr.bin/procstat/procstat_files.c @@ -144,6 +144,8 @@ procstat_files(pid_t pid, struct kinfo_proc *kipp) "PRO", "NAME"); freep = kinfo_getfile(pid, &cnt); + if (freep == NULL) + return; for (i = 0; i < cnt; i++) { kif = &freep[i]; diff --git a/usr.bin/procstat/procstat_vm.c b/usr.bin/procstat/procstat_vm.c index 79c0e57aa5e7..1873c4f25e6c 100644 --- a/usr.bin/procstat/procstat_vm.c +++ b/usr.bin/procstat/procstat_vm.c @@ -54,6 +54,8 @@ procstat_vm(pid_t pid, struct kinfo_proc *kipp __unused) "PRES", "REF", "SHD", "FL", "TP", "PATH"); freep = kinfo_getvmmap(pid, &cnt); + if (freep == NULL) + return; for (i = 0; i < cnt; i++) { kve = &freep[i]; printf("%5d ", pid); |