chiark / gitweb /
sd-bus: store selinux context at connection time
[elogind.git] / src / libelogind / sd-bus / bus-creds.c
index 1ae5a12ebbcede1fbe9344f240baa925c0d9990f..153b058593eef6f754e7b7280d07c1ba49514cc3 100644 (file)
@@ -303,7 +303,7 @@ _public_ int sd_bus_creds_get_ppid(sd_bus_creds *c, pid_t *ppid) {
         if (!(c->mask & SD_BUS_CREDS_PPID))
                 return -ENODATA;
 
-        /* PID 1 has no parent process. Let's distuingish the case of
+        /* PID 1 has no parent process. Let's distinguish the case of
          * not knowing and not having a parent process by the returned
          * error code. */
         if (c->ppid == 0)
@@ -740,11 +740,13 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, pid_t pid, pid_t tid) {
                 return 0;
 
         /* Try to retrieve PID from creds if it wasn't passed to us */
-        if (pid <= 0 && (c->mask & SD_BUS_CREDS_PID))
+        if (pid > 0) {
+                c->pid = pid;
+                c->mask |= SD_BUS_CREDS_PID;
+        } else if (c->mask & SD_BUS_CREDS_PID)
                 pid = c->pid;
-
-        /* Without pid we cannot do much... */
-        if (pid <= 0)
+        else
+                /* Without pid we cannot do much... */
                 return 0;
 
         /* Try to retrieve TID from creds if it wasn't passed to us */
@@ -756,9 +758,6 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, pid_t pid, pid_t tid) {
         if (missing == 0)
                 return 0;
 
-        c->pid = pid;
-        c->mask |= SD_BUS_CREDS_PID;
-
         if (tid > 0) {
                 c->tid = tid;
                 c->mask |= SD_BUS_CREDS_TID;
@@ -956,7 +955,7 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, pid_t pid, pid_t tid) {
         if (missing & SD_BUS_CREDS_EXE) {
                 r = get_process_exe(pid, &c->exe);
                 if (r == -ESRCH) {
-                        /* Unfortunately we cannot really distuingish
+                        /* Unfortunately we cannot really distinguish
                          * the case here where the process does not
                          * exist, and /proc/$PID/exe being unreadable
                          * because $PID is a kernel thread. Hence,
@@ -1068,7 +1067,7 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, pid_t pid, pid_t tid) {
         }
 
         /* In case only the exe path was to be read we cannot
-         * distuingish the case where the exe path was unreadable
+         * distinguish the case where the exe path was unreadable
          * because the process was a kernel thread, or when the
          * process didn't exist at all. Hence, let's do a final check,
          * to be sure. */