diff options
Diffstat (limited to 'kernel/audit.c')
-rw-r--r-- | kernel/audit.c | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/kernel/audit.c b/kernel/audit.c index 9060be750c48..7ec9ccae1299 100644 --- a/kernel/audit.c +++ b/kernel/audit.c | |||
@@ -390,7 +390,7 @@ static int audit_netlink_ok(kernel_cap_t eff_cap, u16 msg_type) | |||
390 | 390 | ||
391 | static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) | 391 | static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) |
392 | { | 392 | { |
393 | u32 uid, pid, seq; | 393 | u32 uid, pid, seq, sid; |
394 | void *data; | 394 | void *data; |
395 | struct audit_status *status_get, status_set; | 395 | struct audit_status *status_get, status_set; |
396 | int err; | 396 | int err; |
@@ -416,6 +416,7 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) | |||
416 | pid = NETLINK_CREDS(skb)->pid; | 416 | pid = NETLINK_CREDS(skb)->pid; |
417 | uid = NETLINK_CREDS(skb)->uid; | 417 | uid = NETLINK_CREDS(skb)->uid; |
418 | loginuid = NETLINK_CB(skb).loginuid; | 418 | loginuid = NETLINK_CB(skb).loginuid; |
419 | sid = NETLINK_CB(skb).sid; | ||
419 | seq = nlh->nlmsg_seq; | 420 | seq = nlh->nlmsg_seq; |
420 | data = NLMSG_DATA(nlh); | 421 | data = NLMSG_DATA(nlh); |
421 | 422 | ||
@@ -468,8 +469,23 @@ static int audit_receive_msg(struct sk_buff *skb, struct nlmsghdr *nlh) | |||
468 | ab = audit_log_start(NULL, GFP_KERNEL, msg_type); | 469 | ab = audit_log_start(NULL, GFP_KERNEL, msg_type); |
469 | if (ab) { | 470 | if (ab) { |
470 | audit_log_format(ab, | 471 | audit_log_format(ab, |
471 | "user pid=%d uid=%u auid=%u msg='%.1024s'", | 472 | "user pid=%d uid=%u auid=%u", |
472 | pid, uid, loginuid, (char *)data); | 473 | pid, uid, loginuid); |
474 | if (sid) { | ||
475 | char *ctx = NULL; | ||
476 | u32 len; | ||
477 | if (selinux_ctxid_to_string( | ||
478 | sid, &ctx, &len)) { | ||
479 | audit_log_format(ab, | ||
480 | " subj=%u", sid); | ||
481 | /* Maybe call audit_panic? */ | ||
482 | } else | ||
483 | audit_log_format(ab, | ||
484 | " subj=%s", ctx); | ||
485 | kfree(ctx); | ||
486 | } | ||
487 | audit_log_format(ab, " msg='%.1024s'", | ||
488 | (char *)data); | ||
473 | audit_set_pid(ab, pid); | 489 | audit_set_pid(ab, pid); |
474 | audit_log_end(ab); | 490 | audit_log_end(ab); |
475 | } | 491 | } |