Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 175fc484 authored by Al Viro's avatar Al Viro Committed by Linus Torvalds
Browse files

fix oops in __audit_signal_info()



	The check for audit_signals is misplaced and the check for
audit_dummy_context() is missing; as the result, if we send a signal to
auditd from task with NULL ->audit_context while we have audit_signals
!= 0 we end up with an oops.

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Acked-by: default avatarJames Morris <jmorris@namei.org>
Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
parent 9dc83afd
Loading
Loading
Loading
Loading
+11 −11
Original line number Diff line number Diff line
@@ -1992,8 +1992,8 @@ int __audit_signal_info(int sig, struct task_struct *t)
	extern uid_t audit_sig_uid;
	extern u32 audit_sig_sid;

	if (audit_pid && t->tgid == audit_pid &&
	    (sig == SIGTERM || sig == SIGHUP || sig == SIGUSR1)) {
	if (audit_pid && t->tgid == audit_pid) {
		if (sig == SIGTERM || sig == SIGHUP || sig == SIGUSR1) {
			audit_sig_pid = tsk->pid;
			if (ctx)
				audit_sig_uid = ctx->loginuid;
@@ -2001,9 +2001,9 @@ int __audit_signal_info(int sig, struct task_struct *t)
				audit_sig_uid = tsk->uid;
			selinux_get_task_sid(tsk, &audit_sig_sid);
		}

	if (!audit_signals) /* audit_context checked in wrapper */
		if (!audit_signals || audit_dummy_context())
			return 0;
	}

	/* optimize the common case by putting first signal recipient directly
	 * in audit_context */