Skip to content
This repository has been archived by the owner on Dec 14, 2022. It is now read-only.

Commit

Permalink
audit: allow interfield comparison between gid and ogid
Browse files Browse the repository at this point in the history
Allow audit rules to compare the gid of the running task to the gid of the
inode in question.

Signed-off-by: Eric Paris <[email protected]>
  • Loading branch information
eparis authored and Al Viro committed Jan 17, 2012
1 parent b34b039 commit c9fe685
Show file tree
Hide file tree
Showing 2 changed files with 8 additions and 1 deletion.
3 changes: 2 additions & 1 deletion include/linux/audit.h
Original file line number Diff line number Diff line change
Expand Up @@ -184,8 +184,9 @@

/* AUDIT_FIELD_COMPARE rule list */
#define AUDIT_COMPARE_UID_TO_OBJ_UID 1
#define AUDIT_COMPARE_GID_TO_OBJ_GID 2

#define AUDIT_MAX_FIELD_COMPARE AUDIT_COMPARE_UID_TO_OBJ_UID
#define AUDIT_MAX_FIELD_COMPARE AUDIT_COMPARE_GID_TO_OBJ_GID
/* Rule fields */
/* These are useful when checking the
* task structure at task creation time
Expand Down
6 changes: 6 additions & 0 deletions kernel/auditsc.c
Original file line number Diff line number Diff line change
Expand Up @@ -474,6 +474,8 @@ static int audit_compare_id(uid_t uid1,
uid_t uid2;
int rc;

BUILD_BUG_ON(sizeof(uid_t) != sizeof(gid_t));

if (name) {
addr = (unsigned long)name;
addr += name_offset;
Expand Down Expand Up @@ -510,6 +512,10 @@ static int audit_field_compare(struct task_struct *tsk,
return audit_compare_id(cred->uid,
name, offsetof(struct audit_names, uid),
f, ctx);
case AUDIT_COMPARE_GID_TO_OBJ_GID:
return audit_compare_id(cred->gid,
name, offsetof(struct audit_names, gid),
f, ctx);
default:
WARN(1, "Missing AUDIT_COMPARE define. Report as a bug\n");
return 0;
Expand Down

0 comments on commit c9fe685

Please sign in to comment.