chiark / gitweb /
elogind --user: call pam_loginuid when creating user@.service (#3120)
[elogind.git] / src / login / logind-core.c
index a128246d1ab0de09a2afc8260779a28e1be64bba..5e62e5ecdb69f3a127bb55898b863f3468677dc1 100644 (file)
@@ -1,5 +1,3 @@
-/*-*- Mode: C; c-basic-offset: 8; indent-tabs-mode: nil -*-*/
-
 /***
   This file is part of systemd.
 
@@ -139,7 +137,7 @@ int manager_add_user_by_uid(Manager *m, uid_t uid, User **_user) {
         errno = 0;
         p = getpwuid(uid);
         if (!p)
-                return errno ? -errno : -ENOENT;
+                return errno > 0 ? -errno : -ENOENT;
 
         return manager_add_user(m, uid, p->pw_gid, p->pw_name, _user);
 }
@@ -397,6 +395,9 @@ bool manager_shall_kill(Manager *m, const char *user) {
         if (!m->kill_user_processes)
                 return false;
 
+        if (!m->kill_exclude_users && streq(user, "root"))
+                return false;
+
         if (strv_contains(m->kill_exclude_users, user))
                 return false;
 
@@ -433,7 +434,7 @@ static int vt_is_busy(unsigned int vtnr) {
 }
 
 int manager_spawn_autovt(Manager *m, unsigned int vtnr) {
-        _cleanup_bus_error_free_ sd_bus_error error = SD_BUS_ERROR_NULL;
+        _cleanup_(sd_bus_error_free) sd_bus_error error = SD_BUS_ERROR_NULL;
         char name[sizeof("autovt@tty.service") + DECIMAL_STR_MAX(unsigned int)];
         int r;