aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--kernel/auditsc.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/kernel/auditsc.c b/kernel/auditsc.c
index f3d3dc652c2c..ef3e189bcb15 100644
--- a/kernel/auditsc.c
+++ b/kernel/auditsc.c
@@ -374,7 +374,7 @@ static int audit_field_compare(struct task_struct *tsk,
374 case AUDIT_COMPARE_EGID_TO_OBJ_GID: 374 case AUDIT_COMPARE_EGID_TO_OBJ_GID:
375 return audit_compare_gid(cred->egid, name, f, ctx); 375 return audit_compare_gid(cred->egid, name, f, ctx);
376 case AUDIT_COMPARE_AUID_TO_OBJ_UID: 376 case AUDIT_COMPARE_AUID_TO_OBJ_UID:
377 return audit_compare_uid(tsk->loginuid, name, f, ctx); 377 return audit_compare_uid(audit_get_loginuid(tsk), name, f, ctx);
378 case AUDIT_COMPARE_SUID_TO_OBJ_UID: 378 case AUDIT_COMPARE_SUID_TO_OBJ_UID:
379 return audit_compare_uid(cred->suid, name, f, ctx); 379 return audit_compare_uid(cred->suid, name, f, ctx);
380 case AUDIT_COMPARE_SGID_TO_OBJ_GID: 380 case AUDIT_COMPARE_SGID_TO_OBJ_GID:
@@ -385,7 +385,8 @@ static int audit_field_compare(struct task_struct *tsk,
385 return audit_compare_gid(cred->fsgid, name, f, ctx); 385 return audit_compare_gid(cred->fsgid, name, f, ctx);
386 /* uid comparisons */ 386 /* uid comparisons */
387 case AUDIT_COMPARE_UID_TO_AUID: 387 case AUDIT_COMPARE_UID_TO_AUID:
388 return audit_uid_comparator(cred->uid, f->op, tsk->loginuid); 388 return audit_uid_comparator(cred->uid, f->op,
389 audit_get_loginuid(tsk));
389 case AUDIT_COMPARE_UID_TO_EUID: 390 case AUDIT_COMPARE_UID_TO_EUID:
390 return audit_uid_comparator(cred->uid, f->op, cred->euid); 391 return audit_uid_comparator(cred->uid, f->op, cred->euid);
391 case AUDIT_COMPARE_UID_TO_SUID: 392 case AUDIT_COMPARE_UID_TO_SUID:
@@ -394,11 +395,14 @@ static int audit_field_compare(struct task_struct *tsk,
394 return audit_uid_comparator(cred->uid, f->op, cred->fsuid); 395 return audit_uid_comparator(cred->uid, f->op, cred->fsuid);
395 /* auid comparisons */ 396 /* auid comparisons */
396 case AUDIT_COMPARE_AUID_TO_EUID: 397 case AUDIT_COMPARE_AUID_TO_EUID:
397 return audit_uid_comparator(tsk->loginuid, f->op, cred->euid); 398 return audit_uid_comparator(audit_get_loginuid(tsk), f->op,
399 cred->euid);
398 case AUDIT_COMPARE_AUID_TO_SUID: 400 case AUDIT_COMPARE_AUID_TO_SUID:
399 return audit_uid_comparator(tsk->loginuid, f->op, cred->suid); 401 return audit_uid_comparator(audit_get_loginuid(tsk), f->op,
402 cred->suid);
400 case AUDIT_COMPARE_AUID_TO_FSUID: 403 case AUDIT_COMPARE_AUID_TO_FSUID:
401 return audit_uid_comparator(tsk->loginuid, f->op, cred->fsuid); 404 return audit_uid_comparator(audit_get_loginuid(tsk), f->op,
405 cred->fsuid);
402 /* euid comparisons */ 406 /* euid comparisons */
403 case AUDIT_COMPARE_EUID_TO_SUID: 407 case AUDIT_COMPARE_EUID_TO_SUID:
404 return audit_uid_comparator(cred->euid, f->op, cred->suid); 408 return audit_uid_comparator(cred->euid, f->op, cred->suid);
@@ -611,7 +615,8 @@ static int audit_filter_rules(struct task_struct *tsk,
611 result = match_tree_refs(ctx, rule->tree); 615 result = match_tree_refs(ctx, rule->tree);
612 break; 616 break;
613 case AUDIT_LOGINUID: 617 case AUDIT_LOGINUID:
614 result = audit_uid_comparator(tsk->loginuid, f->op, f->uid); 618 result = audit_uid_comparator(audit_get_loginuid(tsk),
619 f->op, f->uid);
615 break; 620 break;
616 case AUDIT_LOGINUID_SET: 621 case AUDIT_LOGINUID_SET:
617 result = audit_comparator(audit_loginuid_set(tsk), f->op, f->val); 622 result = audit_comparator(audit_loginuid_set(tsk), f->op, f->val);
@@ -2278,14 +2283,15 @@ int audit_signal_info(int sig, struct task_struct *t)
2278{ 2283{
2279 struct audit_aux_data_pids *axp; 2284 struct audit_aux_data_pids *axp;
2280 struct audit_context *ctx = audit_context(); 2285 struct audit_context *ctx = audit_context();
2281 kuid_t uid = current_uid(), t_uid = task_uid(t); 2286 kuid_t uid = current_uid(), auid, t_uid = task_uid(t);
2282 2287
2283 if (auditd_test_task(t) && 2288 if (auditd_test_task(t) &&
2284 (sig == SIGTERM || sig == SIGHUP || 2289 (sig == SIGTERM || sig == SIGHUP ||
2285 sig == SIGUSR1 || sig == SIGUSR2)) { 2290 sig == SIGUSR1 || sig == SIGUSR2)) {
2286 audit_sig_pid = task_tgid_nr(current); 2291 audit_sig_pid = task_tgid_nr(current);
2287 if (uid_valid(current->loginuid)) 2292 auid = audit_get_loginuid(current);
2288 audit_sig_uid = current->loginuid; 2293 if (uid_valid(auid))
2294 audit_sig_uid = auid;
2289 else 2295 else
2290 audit_sig_uid = uid; 2296 audit_sig_uid = uid;
2291 security_task_getsecid(current, &audit_sig_sid); 2297 security_task_getsecid(current, &audit_sig_sid);