chiark / gitweb /
login: fix potential null pointer dereference
[elogind.git] / src / login / logind-user.c
index 2f62e34f6319a68cbdd528191bcdba1bbbcc7893..a9cf529e12a049899e46a10f32f99a584b3bad4a 100644 (file)
@@ -320,7 +320,7 @@ static int user_mkdir_runtime_path(User *u) {
         } else
                 p = u->runtime_path;
 
-        if (path_is_mount_point(p, false) <= 0) {
+        if (path_is_mount_point(p, 0) <= 0) {
                 _cleanup_free_ char *t = NULL;
 
                 (void) mkdir(p, 0700);
@@ -738,8 +738,7 @@ int user_kill(User *u, int signo) {
         return manager_kill_unit(u->manager, u->slice, KILL_ALL, signo, NULL);
 }
 
-static bool
-elect_display_filter(Session *s) {
+static bool elect_display_filter(Session *s) {
         /* Return true if the session is a candidate for the user’s ‘primary
          * session’ or ‘display’. */
         assert(s);
@@ -747,8 +746,7 @@ elect_display_filter(Session *s) {
         return (s->class == SESSION_USER && !s->stopping);
 }
 
-static int
-elect_display_compare(Session *s1, Session *s2) {
+static int elect_display_compare(Session *s1, Session *s2) {
         /* Indexed by SessionType. Lower numbers mean more preferred. */
         const int type_ranks[_SESSION_TYPE_MAX] = {
                 [SESSION_UNSPECIFIED] = 0,
@@ -765,6 +763,9 @@ elect_display_compare(Session *s1, Session *s2) {
          * is preferred.
          *
          * s1 or s2 may be NULL. */
+        if (!s1 && !s2)
+                return 0;
+
         if ((s1 == NULL) != (s2 == NULL))
                 return (s1 == NULL) - (s2 == NULL);