diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-05-02 00:43:05 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-05-02 00:43:05 -0400 |
commit | 532f57da408c5a5710075d17047e2d97bdfd22f3 (patch) | |
tree | 3fb378bea1816f637aeeed0df805d0c30969cfc3 /ipc/sem.c | |
parent | 46c5ea3c9ae7fbc6e52a13c92e59d4fc7f4ca80a (diff) | |
parent | 2ad312d2093ae506ae0fa184d8d026b559083087 (diff) |
Merge branch 'audit.b10' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current
* 'audit.b10' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/audit-current:
[PATCH] Audit Filter Performance
[PATCH] Rework of IPC auditing
[PATCH] More user space subject labels
[PATCH] Reworked patch for labels on user space messages
[PATCH] change lspp ipc auditing
[PATCH] audit inode patch
[PATCH] support for context based audit filtering, part 2
[PATCH] support for context based audit filtering
[PATCH] no need to wank with task_lock() and pinning task down in audit_syscall_exit()
[PATCH] drop task argument of audit_syscall_{entry,exit}
[PATCH] drop gfp_mask in audit_log_exit()
[PATCH] move call of audit_free() into do_exit()
[PATCH] sockaddr patch
[PATCH] deal with deadlocks in audit_free()
Diffstat (limited to 'ipc/sem.c')
-rw-r--r-- | ipc/sem.c | 11 |
1 files changed, 10 insertions, 1 deletions
@@ -61,6 +61,9 @@ | |||
61 | * (c) 2001 Red Hat Inc <alan@redhat.com> | 61 | * (c) 2001 Red Hat Inc <alan@redhat.com> |
62 | * Lockless wakeup | 62 | * Lockless wakeup |
63 | * (c) 2003 Manfred Spraul <manfred@colorfullife.com> | 63 | * (c) 2003 Manfred Spraul <manfred@colorfullife.com> |
64 | * | ||
65 | * support for audit of ipc object properties and permission changes | ||
66 | * Dustin Kirkland <dustin.kirkland@us.ibm.com> | ||
64 | */ | 67 | */ |
65 | 68 | ||
66 | #include <linux/config.h> | 69 | #include <linux/config.h> |
@@ -820,6 +823,11 @@ static int semctl_down(int semid, int semnum, int cmd, int version, union semun | |||
820 | goto out_unlock; | 823 | goto out_unlock; |
821 | } | 824 | } |
822 | ipcp = &sma->sem_perm; | 825 | ipcp = &sma->sem_perm; |
826 | |||
827 | err = audit_ipc_obj(ipcp); | ||
828 | if (err) | ||
829 | goto out_unlock; | ||
830 | |||
823 | if (current->euid != ipcp->cuid && | 831 | if (current->euid != ipcp->cuid && |
824 | current->euid != ipcp->uid && !capable(CAP_SYS_ADMIN)) { | 832 | current->euid != ipcp->uid && !capable(CAP_SYS_ADMIN)) { |
825 | err=-EPERM; | 833 | err=-EPERM; |
@@ -836,7 +844,8 @@ static int semctl_down(int semid, int semnum, int cmd, int version, union semun | |||
836 | err = 0; | 844 | err = 0; |
837 | break; | 845 | break; |
838 | case IPC_SET: | 846 | case IPC_SET: |
839 | if ((err = audit_ipc_perms(0, setbuf.uid, setbuf.gid, setbuf.mode, ipcp))) | 847 | err = audit_ipc_set_perm(0, setbuf.uid, setbuf.gid, setbuf.mode, ipcp); |
848 | if (err) | ||
840 | goto out_unlock; | 849 | goto out_unlock; |
841 | ipcp->uid = setbuf.uid; | 850 | ipcp->uid = setbuf.uid; |
842 | ipcp->gid = setbuf.gid; | 851 | ipcp->gid = setbuf.gid; |