summaryrefslogtreecommitdiff
path: root/src/login
diff options
context:
space:
mode:
authorSven Eden <yamakuzure@gmx.net>2017-08-14 09:16:15 +0200
committerSven Eden <yamakuzure@gmx.net>2017-08-14 09:20:57 +0200
commitc1480d46a9e8781a15aa5553330a1230afde245b (patch)
tree8391aa0140484e014a23083603bcb727089d9e7c /src/login
parent702f867ba334c116569501d9a5c84283ad7d48aa (diff)
Prep v235: Apply upstream fixes (6/10) [src/login]
Diffstat (limited to 'src/login')
-rw-r--r--src/login/logind-dbus.c6
-rw-r--r--src/login/logind-seat.c4
-rw-r--r--src/login/logind-session.c12
-rw-r--r--src/login/logind-user.c39
-rw-r--r--src/login/logind.conf.in10
-rw-r--r--src/login/meson.build3
-rw-r--r--src/login/pam_elogind.c4
7 files changed, 34 insertions, 44 deletions
diff --git a/src/login/logind-dbus.c b/src/login/logind-dbus.c
index 0b0109ad3..0abf4d50e 100644
--- a/src/login/logind-dbus.c
+++ b/src/login/logind-dbus.c
@@ -771,8 +771,8 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus
if (hashmap_size(m->sessions) >= m->sessions_max)
return sd_bus_error_setf(error, SD_BUS_ERROR_LIMITS_EXCEEDED, "Maximum number of sessions (%" PRIu64 ") reached, refusing further sessions.", m->sessions_max);
- audit_session_from_pid(leader, &audit_id);
- if (audit_id > 0) {
+ (void) audit_session_from_pid(leader, &audit_id);
+ if (audit_session_is_valid(audit_id)) {
/* Keep our session IDs and the audit session IDs in sync */
if (asprintf(&id, "%"PRIu32, audit_id) < 0)
@@ -784,7 +784,7 @@ static int method_create_session(sd_bus_message *message, void *userdata, sd_bus
* ID */
if (hashmap_get(m->sessions, id)) {
log_warning("Existing logind session ID %s used by new audit session, ignoring", id);
- audit_id = 0;
+ audit_id = AUDIT_SESSION_INVALID;
id = mfree(id);
}
diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c
index de27e7137..1b6b4cdf2 100644
--- a/src/login/logind-seat.c
+++ b/src/login/logind-seat.c
@@ -127,7 +127,7 @@ int seat_save(Seat *s) {
if (s->sessions) {
Session *i;
- fputs("SESSIONS=", f);
+ fputs_unlocked("SESSIONS=", f);
LIST_FOREACH(sessions_by_seat, i, s->sessions) {
fprintf(f,
"%s%c",
@@ -135,7 +135,7 @@ int seat_save(Seat *s) {
i->sessions_by_seat_next ? ' ' : '\n');
}
- fputs("UIDS=", f);
+ fputs_unlocked("UIDS=", f);
LIST_FOREACH(sessions_by_seat, i, s->sessions)
fprintf(f,
UID_FMT"%c",
diff --git a/src/login/logind-session.c b/src/login/logind-session.c
index 10e9327c0..6a59f8b47 100644
--- a/src/login/logind-session.c
+++ b/src/login/logind-session.c
@@ -33,7 +33,6 @@
#include "bus-error.h"
#include "bus-util.h"
#include "escape.h"
-#include "extract-word.h"
#include "fd-util.h"
#include "fileio.h"
#include "format-util.h"
@@ -83,6 +82,7 @@ Session* session_new(Manager *m, const char *id) {
s->manager = m;
s->fifo_fd = -1;
s->vtfd = -1;
+ s->audit_id = AUDIT_SESSION_INVALID;
return s;
}
@@ -285,10 +285,10 @@ int session_save(Session *s) {
if (!s->vtnr)
fprintf(f, "POSITION=%u\n", s->position);
- if (s->leader > 0)
+ if (pid_is_valid(s->leader))
fprintf(f, "LEADER="PID_FMT"\n", s->leader);
- if (s->audit_id > 0)
+ if (audit_session_is_valid(s->audit_id))
fprintf(f, "AUDIT=%"PRIu32"\n", s->audit_id);
if (dual_timestamp_is_set(&s->timestamp))
@@ -466,9 +466,8 @@ int session_load(Session *s) {
}
if (leader) {
- k = parse_pid(leader, &s->leader);
- if (k >= 0)
- audit_session_from_pid(s->leader, &s->audit_id);
+ if (parse_pid(leader, &s->leader) >= 0)
+ (void) audit_session_from_pid(s->leader, &s->audit_id);
}
if (type) {
@@ -771,7 +770,6 @@ int session_stop(Session *s, bool force) {
#if 1 /// elogind must queue this session again
session_add_to_gc_queue(s);
#endif // 1
-
return r;
}
diff --git a/src/login/logind-user.c b/src/login/logind-user.c
index ae1d8b6bd..cd460d365 100644
--- a/src/login/logind-user.c
+++ b/src/login/logind-user.c
@@ -189,18 +189,18 @@ static int user_save_internal(User *u) {
Session *i;
bool first;
- fputs("SESSIONS=", f);
+ fputs_unlocked("SESSIONS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (first)
first = false;
else
- fputc(' ', f);
+ fputc_unlocked(' ', f);
- fputs(i->id, f);
+ fputs_unlocked(i->id, f);
}
- fputs("\nSEATS=", f);
+ fputs_unlocked("\nSEATS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (!i->seat)
@@ -209,12 +209,12 @@ static int user_save_internal(User *u) {
if (first)
first = false;
else
- fputc(' ', f);
+ fputc_unlocked(' ', f);
- fputs(i->seat->id, f);
+ fputs_unlocked(i->seat->id, f);
}
- fputs("\nACTIVE_SESSIONS=", f);
+ fputs_unlocked("\nACTIVE_SESSIONS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (!session_is_active(i))
@@ -223,12 +223,12 @@ static int user_save_internal(User *u) {
if (first)
first = false;
else
- fputc(' ', f);
+ fputc_unlocked(' ', f);
- fputs(i->id, f);
+ fputs_unlocked(i->id, f);
}
- fputs("\nONLINE_SESSIONS=", f);
+ fputs_unlocked("\nONLINE_SESSIONS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (session_get_state(i) == SESSION_CLOSING)
@@ -237,12 +237,12 @@ static int user_save_internal(User *u) {
if (first)
first = false;
else
- fputc(' ', f);
+ fputc_unlocked(' ', f);
- fputs(i->id, f);
+ fputs_unlocked(i->id, f);
}
- fputs("\nACTIVE_SEATS=", f);
+ fputs_unlocked("\nACTIVE_SEATS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (!session_is_active(i) || !i->seat)
@@ -251,12 +251,12 @@ static int user_save_internal(User *u) {
if (first)
first = false;
else
- fputc(' ', f);
+ fputc_unlocked(' ', f);
- fputs(i->seat->id, f);
+ fputs_unlocked(i->seat->id, f);
}
- fputs("\nONLINE_SEATS=", f);
+ fputs_unlocked("\nONLINE_SEATS=", f);
first = true;
LIST_FOREACH(sessions_by_user, i, u->sessions) {
if (session_get_state(i) == SESSION_CLOSING || !i->seat)
@@ -265,11 +265,11 @@ static int user_save_internal(User *u) {
if (first)
first = false;
else
- fputc(' ', f);
+ fputc_unlocked(' ', f);
- fputs(i->seat->id, f);
+ fputs_unlocked(i->seat->id, f);
}
- fputc('\n', f);
+ fputc_unlocked('\n', f);
}
r = fflush_and_check(f);
@@ -616,7 +616,6 @@ int user_stop(User *u, bool force) {
#if 1 /// elogind must queue this user again
user_add_to_gc_queue(u);
#endif // 1
-
return r;
}
diff --git a/src/login/logind.conf.in b/src/login/logind.conf.in
index 27b05fe8a..a3b89df4e 100644
--- a/src/login/logind.conf.in
+++ b/src/login/logind.conf.in
@@ -12,6 +12,8 @@
# See logind.conf(5) for details.
[Login]
+#NAutoVTs=6
+#ReserveVT=6
#KillUserProcesses=@KILL_USER_PROCESSES@
#KillOnlyUsers=
#KillExcludeUsers=root
@@ -33,11 +35,3 @@
#InhibitorsMax=8192
#SessionsMax=8192
#UserTasksMax=33%
-
-[Sleep]
-#SuspendState=mem standby freeze
-#SuspendMode=
-#HibernateState=disk
-#HibernateMode=platform shutdown
-#HybridSleepState=disk
-#HybridSleepMode=suspend platform shutdown
diff --git a/src/login/meson.build b/src/login/meson.build
index 9fd44ddc1..3a496a6e5 100644
--- a/src/login/meson.build
+++ b/src/login/meson.build
@@ -24,6 +24,7 @@ logind_gperf_c = custom_target(
elogind_sources += [logind_gperf_c]
#endif // 0
+
liblogind_core_sources = files('''
logind-core.c
logind-device.c
@@ -59,7 +60,6 @@ liblogind_core_sources += [files('''
sleep_files,
update_utmp_files]
#endif // 1
-
logind_acl_c = files('logind-acl.c')
if conf.get('HAVE_ACL', false)
liblogind_core_sources += logind_acl_c
@@ -83,7 +83,6 @@ loginctl_sources += files('''
eloginctl.h
'''.split())
#endif // 1
-
#if 0 /// elogind builds itself unconditionally and with some adaptatins
# if conf.get('ENABLE_LOGIND', false)
# logind_conf = configure_file(
diff --git a/src/login/pam_elogind.c b/src/login/pam_elogind.c
index 472abdede..32a968bb6 100644
--- a/src/login/pam_elogind.c
+++ b/src/login/pam_elogind.c
@@ -376,7 +376,7 @@ _public_ PAM_EXTERN int pam_sm_open_session(
if (debug)
pam_syslog(handle, LOG_DEBUG, "Asking logind to create session: "
"uid="UID_FMT" pid="PID_FMT" service=%s type=%s class=%s desktop=%s seat=%s vtnr=%"PRIu32" tty=%s display=%s remote=%s remote_user=%s remote_host=%s",
- pw->pw_uid, getpid(),
+ pw->pw_uid, getpid_cached(),
strempty(service),
type, class, strempty(desktop),
strempty(seat), vtnr, strempty(tty), strempty(display),
@@ -391,7 +391,7 @@ _public_ PAM_EXTERN int pam_sm_open_session(
&reply,
"uusssssussbssa(sv)",
(uint32_t) pw->pw_uid,
- (uint32_t) getpid(),
+ (uint32_t) getpid_cached(),
service,
type,
class,