chiark / gitweb /
login: fix potential null pointer dereference
[elogind.git] / src / login / logind-user.c
index 373c9938e769c17ca933d4fb53555ef05e89a41b..a9cf529e12a049899e46a10f32f99a584b3bad4a 100644 (file)
@@ -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);