diff options
author | Steve Grubb <sgrubb@redhat.com> | 2005-04-29 12:30:07 -0400 |
---|---|---|
committer | <dwmw2@shinybook.infradead.org> | 2005-04-29 12:30:07 -0400 |
commit | 456be6cd90dbbb9b0ea01d56932d56d110d51cf7 (patch) | |
tree | 27f0d001610f686d11ff460cb6c848a599c8ca4f /kernel/auditsc.c | |
parent | 37509e749dc2072e667db806ef24b9e897f61b8a (diff) |
[AUDIT] LOGIN message credentials
Attached is a new patch that solves the issue of getting valid credentials
into the LOGIN message. The current code was assuming that the audit context
had already been copied. This is not always the case for LOGIN messages.
To solve the problem, the patch passes the task struct to the function that
emits the message where it can get valid credentials.
Signed-off-by: Steve Grubb <sgrubb@redhat.com>
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'kernel/auditsc.c')
-rw-r--r-- | kernel/auditsc.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/kernel/auditsc.c b/kernel/auditsc.c index 66148f81d783..37b3ac94bc47 100644 --- a/kernel/auditsc.c +++ b/kernel/auditsc.c | |||
@@ -1010,20 +1010,21 @@ void audit_get_stamp(struct audit_context *ctx, | |||
1010 | 1010 | ||
1011 | extern int audit_set_type(struct audit_buffer *ab, int type); | 1011 | extern int audit_set_type(struct audit_buffer *ab, int type); |
1012 | 1012 | ||
1013 | int audit_set_loginuid(struct audit_context *ctx, uid_t loginuid) | 1013 | int audit_set_loginuid(struct task_struct *task, uid_t loginuid) |
1014 | { | 1014 | { |
1015 | if (ctx) { | 1015 | if (task->audit_context) { |
1016 | struct audit_buffer *ab; | 1016 | struct audit_buffer *ab; |
1017 | 1017 | ||
1018 | ab = audit_log_start(NULL); | 1018 | ab = audit_log_start(NULL); |
1019 | if (ab) { | 1019 | if (ab) { |
1020 | audit_log_format(ab, "login pid=%d uid=%u " | 1020 | audit_log_format(ab, "login pid=%d uid=%u " |
1021 | "old loginuid=%u new loginuid=%u", | 1021 | "old loginuid=%u new loginuid=%u", |
1022 | ctx->pid, ctx->uid, ctx->loginuid, loginuid); | 1022 | task->pid, task->uid, |
1023 | task->audit_context->loginuid, loginuid); | ||
1023 | audit_set_type(ab, AUDIT_LOGIN); | 1024 | audit_set_type(ab, AUDIT_LOGIN); |
1024 | audit_log_end(ab); | 1025 | audit_log_end(ab); |
1025 | } | 1026 | } |
1026 | ctx->loginuid = loginuid; | 1027 | task->audit_context->loginuid = loginuid; |
1027 | } | 1028 | } |
1028 | return 0; | 1029 | return 0; |
1029 | } | 1030 | } |