Author: marcus (doc,ports committer)
Date: Fri Dec 19 06:50:15 2008
New Revision: 186315
URL: http://svn.freebsd.org/changeset/base/186315

Log:
  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.
  
  Reviewed by:  peter
  Approved by:  peter

Modified:
  head/usr.bin/procstat/procstat_files.c
  head/usr.bin/procstat/procstat_vm.c

Modified: head/usr.bin/procstat/procstat_files.c
==============================================================================
--- head/usr.bin/procstat/procstat_files.c      Fri Dec 19 06:47:59 2008        
(r186314)
+++ head/usr.bin/procstat/procstat_files.c      Fri Dec 19 06:50:15 2008        
(r186315)
@@ -144,6 +144,8 @@ procstat_files(pid_t pid, struct kinfo_p
                    "PRO", "NAME");
 
        freep = kinfo_getfile(pid, &cnt);
+       if (freep == NULL)
+               return;
        for (i = 0; i < cnt; i++) {
                kif = &freep[i];
                

Modified: head/usr.bin/procstat/procstat_vm.c
==============================================================================
--- head/usr.bin/procstat/procstat_vm.c Fri Dec 19 06:47:59 2008        
(r186314)
+++ head/usr.bin/procstat/procstat_vm.c Fri Dec 19 06:50:15 2008        
(r186315)
@@ -54,6 +54,8 @@ procstat_vm(pid_t pid, struct kinfo_proc
                    "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);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to