diff options
Diffstat (limited to 'kernel/audit.c')
| -rw-r--r-- | kernel/audit.c | 13 | 
1 files changed, 7 insertions, 6 deletions
| diff --git a/kernel/audit.c b/kernel/audit.c index 09fae2677a45..bb0eb5bb9a0a 100644 --- a/kernel/audit.c +++ b/kernel/audit.c @@ -601,13 +601,13 @@ static int audit_netlink_ok(struct sk_buff *skb, u16 msg_type)  	case AUDIT_TTY_SET:  	case AUDIT_TRIM:  	case AUDIT_MAKE_EQUIV: -		if (security_netlink_recv(skb, CAP_AUDIT_CONTROL)) +		if (!capable(CAP_AUDIT_CONTROL))  			err = -EPERM;  		break;  	case AUDIT_USER:  	case AUDIT_FIRST_USER_MSG ... AUDIT_LAST_USER_MSG:  	case AUDIT_FIRST_USER_MSG2 ... AUDIT_LAST_USER_MSG2: -		if (security_netlink_recv(skb, CAP_AUDIT_WRITE)) +		if (!capable(CAP_AUDIT_WRITE))  			err = -EPERM;  		break;  	default:  /* bad msg */ @@ -631,7 +631,7 @@ static int audit_log_common_recv_msg(struct audit_buffer **ab, u16 msg_type,  	}  	*ab = audit_log_start(NULL, GFP_KERNEL, msg_type); -	audit_log_format(*ab, "user pid=%d uid=%u auid=%u ses=%u", +	audit_log_format(*ab, "pid=%d uid=%u auid=%u ses=%u",  			 pid, uid, auid, ses);  	if (sid) {  		rc = security_secid_to_secctx(sid, &ctx, &len); @@ -1260,12 +1260,13 @@ static void audit_log_vformat(struct audit_buffer *ab, const char *fmt,  		avail = audit_expand(ab,  			max_t(unsigned, AUDIT_BUFSIZ, 1+len-avail));  		if (!avail) -			goto out; +			goto out_va_end;  		len = vsnprintf(skb_tail_pointer(skb), avail, fmt, args2);  	} -	va_end(args2);  	if (len > 0)  		skb_put(skb, len); +out_va_end: +	va_end(args2);  out:  	return;  } @@ -1422,7 +1423,7 @@ void audit_log_d_path(struct audit_buffer *ab, const char *prefix,  	char *p, *pathname;  	if (prefix) -		audit_log_format(ab, " %s", prefix); +		audit_log_format(ab, "%s", prefix);  	/* We will allow 11 spaces for ' (deleted)' to be appended */  	pathname = kmalloc(PATH_MAX+11, ab->gfp_mask); | 
