chiark / gitweb /
sd-bus: handle ppid=0 more gracefully (which happens for pid=1)
[elogind.git] / src / libelogind / sd-bus / bus-creds.c
index ab48aafccc8653adb4aa7091e5265f27fd0519d8..9d519c4735e406c1964738a5da4668a26982adfb 100644 (file)
@@ -734,11 +734,14 @@ int bus_creds_add_more(sd_bus_creds *c, uint64_t mask, pid_t pid, pid_t tid) {
                                         if (p) {
                                                 p += strspn(p, WHITESPACE);
 
-                                                r = parse_pid(p, &c->ppid);
-                                                if (r < 0)
-                                                        return r;
+                                                /* Explicitly check for PPID 0 (which is the case for PID 1) */
+                                                if (!streq(p, "0")) {
+                                                        r = parse_pid(p, &c->ppid);
+                                                        if (r < 0)
+                                                                return r;
 
-                                                c->mask |= SD_BUS_CREDS_PPID;
+                                                        c->mask |= SD_BUS_CREDS_PPID;
+                                                }
                                                 continue;
                                         }
                                 }