summaryrefslogtreecommitdiff
blob: eccfe5b5b18e5abefd5e3594b5d1eea44d60338e (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
From 7f0a938467e4e3d57c68af1caa146a664458a911 Mon Sep 17 00:00:00 2001
From: Victor Kareh <vkareh@redhat.com>
Date: Wed, 6 Mar 2019 09:20:36 -0500
Subject: [PATCH] Guard against missing systemd

---
 mate-session/gsm-systemd.c | 19 +++++++++++++++++++
 1 file changed, 19 insertions(+)

diff --git a/mate-session/gsm-systemd.c b/mate-session/gsm-systemd.c
index da3f23b..d03cafd 100644
--- a/mate-session/gsm-systemd.c
+++ b/mate-session/gsm-systemd.c
@@ -429,16 +429,31 @@ gsm_systemd_is_last_session_for_user (GsmSystemd *manager)
         gboolean is_last_session;
         int ret, i;
 
+#ifdef HAVE_SYSTEMD
         ret = sd_pid_get_session (getpid (), &session);
+#endif
+
+        if (session == NULL) {
+                return FALSE;
+        }
 
         if (ret != 0) {
+                free (session);
                 return FALSE;
         }
 
+#ifdef HAVE_SYSTEMD
         ret = sd_uid_get_sessions (getuid (), FALSE, &sessions);
+#endif
+
+        if (sessions == NULL) {
+                free (session);
+                return FALSE;
+        }
 
         if (ret <= 0) {
                 free (session);
+                free (sessions);
                 return FALSE;
         }
 
@@ -450,7 +465,9 @@ gsm_systemd_is_last_session_for_user (GsmSystemd *manager)
                 if (g_strcmp0 (sessions[i], session) == 0)
                         continue;
 
+#ifdef HAVE_SYSTEMD
                 ret = sd_session_get_state (sessions[i], &state);
+#endif
 
                 if (ret != 0)
                         continue;
@@ -461,7 +478,9 @@ gsm_systemd_is_last_session_for_user (GsmSystemd *manager)
                 }
                 free (state);
 
+#ifdef HAVE_SYSTEMD
                 ret = sd_session_get_type (sessions[i], &type);
+#endif
 
                 if (ret != 0)
                         continue;