Skip to content

Commit 7f0a938

Browse files
committed
Guard against missing systemd
1 parent a6be597 commit 7f0a938

1 file changed

Lines changed: 19 additions & 0 deletions

File tree

mate-session/gsm-systemd.c

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -429,16 +429,31 @@ gsm_systemd_is_last_session_for_user (GsmSystemd *manager)
429429
gboolean is_last_session;
430430
int ret, i;
431431

432+
#ifdef HAVE_SYSTEMD
432433
ret = sd_pid_get_session (getpid (), &session);
434+
#endif
435+
436+
if (session == NULL) {
437+
return FALSE;
438+
}
433439

434440
if (ret != 0) {
441+
free (session);
435442
return FALSE;
436443
}
437444

445+
#ifdef HAVE_SYSTEMD
438446
ret = sd_uid_get_sessions (getuid (), FALSE, &sessions);
447+
#endif
448+
449+
if (sessions == NULL) {
450+
free (session);
451+
return FALSE;
452+
}
439453

440454
if (ret <= 0) {
441455
free (session);
456+
free (sessions);
442457
return FALSE;
443458
}
444459

@@ -450,7 +465,9 @@ gsm_systemd_is_last_session_for_user (GsmSystemd *manager)
450465
if (g_strcmp0 (sessions[i], session) == 0)
451466
continue;
452467

468+
#ifdef HAVE_SYSTEMD
453469
ret = sd_session_get_state (sessions[i], &state);
470+
#endif
454471

455472
if (ret != 0)
456473
continue;
@@ -461,7 +478,9 @@ gsm_systemd_is_last_session_for_user (GsmSystemd *manager)
461478
}
462479
free (state);
463480

481+
#ifdef HAVE_SYSTEMD
464482
ret = sd_session_get_type (sessions[i], &type);
483+
#endif
465484

466485
if (ret != 0)
467486
continue;

0 commit comments

Comments
 (0)