svn commit: r233807 - stable/9/usr.bin/procstat

Mikolaj Golub trociny at FreeBSD.org
Mon Apr 2 19:17:02 UTC 2012


Author: trociny
Date: Mon Apr  2 19:17:01 2012
New Revision: 233807
URL: http://svn.freebsd.org/changeset/base/233807

Log:
  MFC r232182:
  
  When displaying security credential information show also process umask.
  
  Submitted by:   Dmitry Banschikov <me ubique spb ru>
  Discussed with: rwatson

Modified:
  stable/9/usr.bin/procstat/procstat_cred.c
Directory Properties:
  stable/9/usr.bin/procstat/   (props changed)

Modified: stable/9/usr.bin/procstat/procstat_cred.c
==============================================================================
--- stable/9/usr.bin/procstat/procstat_cred.c	Mon Apr  2 19:15:32 2012	(r233806)
+++ stable/9/usr.bin/procstat/procstat_cred.c	Mon Apr  2 19:17:01 2012	(r233807)
@@ -38,6 +38,8 @@
 
 #include "procstat.h"
 
+static const char *get_umask(struct kinfo_proc *kipp);
+
 void
 procstat_cred(struct kinfo_proc *kipp)
 {
@@ -48,9 +50,9 @@ procstat_cred(struct kinfo_proc *kipp)
 	gid_t *groups = NULL;
 
 	if (!hflag)
-		printf("%5s %-16s %5s %5s %5s %5s %5s %5s %5s %-15s\n", "PID",
-		    "COMM", "EUID", "RUID", "SVUID", "EGID", "RGID", "SVGID",
-		    "FLAGS", "GROUPS");
+		printf("%5s %-16s %5s %5s %5s %5s %5s %5s %5s %5s %-15s\n",
+		    "PID", "COMM", "EUID", "RUID", "SVUID", "EGID", "RGID",
+		    "SVGID", "UMASK", "FLAGS", "GROUPS");
 
 	printf("%5d ", kipp->ki_pid);
 	printf("%-16s ", kipp->ki_comm);
@@ -60,6 +62,7 @@ procstat_cred(struct kinfo_proc *kipp)
 	printf("%5d ", kipp->ki_groups[0]);
 	printf("%5d ", kipp->ki_rgid);
 	printf("%5d ", kipp->ki_svgid);
+	printf("%5s ", get_umask(kipp));
 	printf("%s", kipp->ki_cr_flags & CRED_FLAG_CAPMODE ? "C" : "-");
 	printf("     ");
 
@@ -98,3 +101,26 @@ procstat_cred(struct kinfo_proc *kipp)
 
 	printf("\n");
 }
+
+static const char *
+get_umask(struct kinfo_proc *kipp)
+{
+	int error;
+	int mib[4];
+	size_t len;
+	u_short fd_cmask;
+	static char umask[4];
+
+	mib[0] = CTL_KERN;
+	mib[1] = KERN_PROC;
+	mib[2] = KERN_PROC_UMASK;
+	mib[3] = kipp->ki_pid;
+	len = sizeof(fd_cmask);
+	error = sysctl(mib, 4, &fd_cmask, &len, NULL, 0);
+	if (error == 0) {
+		snprintf(umask, 4, "%03o", fd_cmask);
+		return (umask);
+	} else {
+		return ("-");
+	}
+}


More information about the svn-src-stable-9 mailing list