guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

65/118: nix-daemon: Only print connection info if we have SO_PEERCRED


From: Ludovic Courtès
Subject: 65/118: nix-daemon: Only print connection info if we have SO_PEERCRED
Date: Tue, 19 May 2015 14:45:42 +0000

civodul pushed a commit to branch nix
in repository guix.

commit 77c972c898b325997fa2f527264a9706f1e414a5
Author: Eelco Dolstra <address@hidden>
Date:   Thu Jul 17 15:41:11 2014 +0200

    nix-daemon: Only print connection info if we have SO_PEERCRED
---
 src/nix-daemon/nix-daemon.cc |   21 ++++++++++++---------
 1 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/src/nix-daemon/nix-daemon.cc b/src/nix-daemon/nix-daemon.cc
index ab9e4b9..f486806 100644
--- a/src/nix-daemon/nix-daemon.cc
+++ b/src/nix-daemon/nix-daemon.cc
@@ -854,22 +854,25 @@ static void daemonLoop()
 
             closeOnExec(remote);
 
-            /* Get the identity of the caller, if possible. */
-            uid_t clientUid = -1;
-            pid_t clientPid = -1;
             bool trusted = false;
 
+            pid_t clientPid = -1;
+
 #if defined(SO_PEERCRED)
+            /* Get the identity of the caller, if possible. */
+            uid_t clientUid = -1;
+
             ucred cred;
             socklen_t credLen = sizeof(cred);
-            if (getsockopt(remote, SOL_SOCKET, SO_PEERCRED, &cred, &credLen) 
!= -1) {
-                clientPid = cred.pid;
-                clientUid = cred.uid;
-                if (clientUid == 0) trusted = true;
-            }
-#endif
+            if (getsockopt(remote, SOL_SOCKET, SO_PEERCRED, &cred, &credLen) 
== -1)
+                throw SysError("getting peer credentials");
+
+            clientPid = cred.pid;
+            clientUid = cred.uid;
+            if (clientUid == 0) trusted = true;
 
             printMsg(lvlInfo, format("accepted connection from pid %1%, uid 
%2%") % clientPid % clientUid);
+#endif
 
             /* Fork a child to handle the connection. */
             startProcess([&]() {



reply via email to

[Prev in Thread] Current Thread [Next in Thread]