xserver: Branch 'master'

Alan Coopersmith alanc at kemper.freedesktop.org
Thu Nov 2 02:18:21 EET 2006


 os/connection.c |   30 +++++++++++++++++++++++++++---
 1 files changed, 27 insertions(+), 3 deletions(-)

New commits:
diff-tree a7b944f0d96c3e0e15e75378a04def1ac96089fb (from fbfb35189ef6666707097704b43e052cb2f919ae)
Author: Alan Coopersmith <alan.coopersmith at sun.com>
Date:   Wed Nov 1 16:17:49 2006 -0800

    If getpeerucred() is available, include pid & zoneid in audit messages too

diff --git a/os/connection.c b/os/connection.c
index 60f3b9f..6ca4010 100644
--- a/os/connection.c
+++ b/os/connection.c
@@ -165,6 +165,11 @@ extern __const__ int _nfiles;
 #include <netdnet/dn.h>
 #endif /* DNETCONN */
 
+#ifdef HAS_GETPEERUCRED
+# include <ucred.h>
+# include <zone.h>
+#endif
+
 int lastfdesc;			/* maximum file descriptor */
 
 fd_set WellKnownConnections;	/* Listener mask */
@@ -550,8 +555,13 @@ AuthAudit (ClientPtr client, Bool letin,
     char addr[128];
     char *out = addr;
     int client_uid;
-    char client_uid_string[32];
-    
+    char client_uid_string[64];
+#ifdef HAS_GETPEERUCRED
+    ucred_t *peercred = NULL;
+    pid_t client_pid = -1;
+    zoneid_t client_zid = -1;
+#endif
+
     if (!len)
         strcpy(out, "local host");
     else
@@ -588,10 +598,24 @@ AuthAudit (ClientPtr client, Bool letin,
 	    strcpy(out, "unknown address");
 	}
 
+#ifdef HAS_GETPEERUCRED
+    if (getpeerucred(((OsCommPtr)client->osPrivate)->fd, &peercred) >= 0) {
+	client_uid = ucred_geteuid(peercred);
+	client_pid = ucred_getpid(peercred);
+	client_zid = ucred_getzoneid(peercred);
+
+	ucred_free(peercred);
+	snprintf(client_uid_string, sizeof(client_uid_string),
+		 " (uid %ld, pid %ld, zone %ld)",
+		 (long) client_uid, (long) client_pid, (long) client_zid);
+    }
+#else    
     if (LocalClientCred(client, &client_uid, NULL) != -1) {
 	snprintf(client_uid_string, sizeof(client_uid_string),
 		 " (uid %d)", client_uid);
-    } else {
+    }
+#endif
+    else {
 	client_uid_string[0] = '\0';
     }
     



More information about the xorg-commit mailing list