mirror of
https://github.com/systemd/systemd.git
synced 2024-12-23 21:35:11 +03:00
journal: Don't use loginuid if it's not valid
Code above this attempted to load loginuid, if this failed for whatever reason, we'd still end up using that value (0) in place of realuid. Fix this by setting a bool when we know the loginuid is valid. This fixes journal messages showing up in per-user journals in gnome-ostree (not configured with loginuid, but I'll shortly fix that).
This commit is contained in:
parent
b43d1d01ea
commit
759c945a43
@ -515,6 +515,8 @@ static void dispatch_message_real(
|
|||||||
int r;
|
int r;
|
||||||
char *t;
|
char *t;
|
||||||
uid_t loginuid = 0, realuid = 0;
|
uid_t loginuid = 0, realuid = 0;
|
||||||
|
uid_t journal_uid;
|
||||||
|
bool loginuid_valid = false;
|
||||||
|
|
||||||
assert(s);
|
assert(s);
|
||||||
assert(iovec);
|
assert(iovec);
|
||||||
@ -571,9 +573,11 @@ static void dispatch_message_real(
|
|||||||
IOVEC_SET_STRING(iovec[n++], audit_session);
|
IOVEC_SET_STRING(iovec[n++], audit_session);
|
||||||
|
|
||||||
r = audit_loginuid_from_pid(ucred->pid, &loginuid);
|
r = audit_loginuid_from_pid(ucred->pid, &loginuid);
|
||||||
if (r >= 0)
|
if (r >= 0) {
|
||||||
|
loginuid_valid = true;
|
||||||
if (asprintf(&audit_loginuid, "_AUDIT_LOGINUID=%lu", (unsigned long) loginuid) >= 0)
|
if (asprintf(&audit_loginuid, "_AUDIT_LOGINUID=%lu", (unsigned long) loginuid) >= 0)
|
||||||
IOVEC_SET_STRING(iovec[n++], audit_loginuid);
|
IOVEC_SET_STRING(iovec[n++], audit_loginuid);
|
||||||
|
}
|
||||||
|
|
||||||
t = shortened_cgroup_path(ucred->pid);
|
t = shortened_cgroup_path(ucred->pid);
|
||||||
if (t) {
|
if (t) {
|
||||||
@ -666,10 +670,14 @@ static void dispatch_message_real(
|
|||||||
|
|
||||||
assert(n <= m);
|
assert(n <= m);
|
||||||
|
|
||||||
write_to_journal(s,
|
if (s->split_mode == SPLIT_NONE)
|
||||||
s->split_mode == SPLIT_NONE ? 0 :
|
journal_uid = 0;
|
||||||
(s->split_mode == SPLIT_UID ? realuid :
|
else if (s->split_mode == SPLIT_UID || realuid == 0 || !loginuid_valid)
|
||||||
(realuid == 0 ? 0 : loginuid)), iovec, n);
|
journal_uid = realuid;
|
||||||
|
else
|
||||||
|
journal_uid = loginuid;
|
||||||
|
|
||||||
|
write_to_journal(s, journal_uid, iovec, n);
|
||||||
}
|
}
|
||||||
|
|
||||||
void server_driver_message(Server *s, sd_id128_t message_id, const char *format, ...) {
|
void server_driver_message(Server *s, sd_id128_t message_id, const char *format, ...) {
|
||||||
|
Loading…
Reference in New Issue
Block a user