diff options
| author | David Woodhouse <dwmw2@shinybook.infradead.org> | 2005-03-01 09:15:37 +0000 |
|---|---|---|
| committer | David Woodhouse <dwmw2@shinybook.infradead.org> | 2005-03-01 09:15:37 +0000 |
| commit | e20ffd76fc5bdccf79223667a615dd4c820947ab (patch) | |
| tree | c5539e7a6c4f1efd72734561a3ce204efcf71b9a /ipc | |
| parent | 54077d3c29a1afba9fe5a0c91f4a24d34083e764 (diff) | |
Audit IPC object owner/permission changes.
Add linked list of auxiliary data to audit_context
Add callbacks in IPC_SET functions to record requested changes.
Signed-off-by: David Woodhouse <dwmw2@infradead.org>
Diffstat (limited to 'ipc')
| -rw-r--r-- | ipc/msg.c | 3 | ||||
| -rw-r--r-- | ipc/sem.c | 3 | ||||
| -rw-r--r-- | ipc/shm.c | 3 |
3 files changed, 9 insertions, 0 deletions
diff --git a/ipc/msg.c b/ipc/msg.c index 7d7470c8d2c2..27e516f96cdc 100644 --- a/ipc/msg.c +++ b/ipc/msg.c @@ -25,6 +25,7 @@ #include <linux/security.h> #include <linux/sched.h> #include <linux/syscalls.h> +#include <linux/audit.h> #include <asm/current.h> #include <asm/uaccess.h> #include "util.h" @@ -425,6 +426,8 @@ asmlinkage long sys_msgctl (int msqid, int cmd, struct msqid_ds __user *buf) return -EFAULT; if (copy_msqid_from_user (&setbuf, buf, version)) return -EFAULT; + if ((err = audit_ipc_perms(setbuf.qbytes, setbuf.uid, setbuf.gid, setbuf.mode))) + return err; break; case IPC_RMID: break; diff --git a/ipc/sem.c b/ipc/sem.c index f0efedb8d4c3..5ad7ac0ed60d 100644 --- a/ipc/sem.c +++ b/ipc/sem.c @@ -72,6 +72,7 @@ #include <linux/smp_lock.h> #include <linux/security.h> #include <linux/syscalls.h> +#include <linux/audit.h> #include <asm/uaccess.h> #include "util.h" @@ -803,6 +804,8 @@ static int semctl_down(int semid, int semnum, int cmd, int version, union semun if(cmd == IPC_SET) { if(copy_semid_from_user (&setbuf, arg.buf, version)) return -EFAULT; + if ((err = audit_ipc_perms(0, setbuf.uid, setbuf.gid, setbuf.mode))) + return err; } sma = sem_lock(semid); if(sma==NULL) diff --git a/ipc/shm.c b/ipc/shm.c index dcdc6d5e22bc..06cd5c91056f 100644 --- a/ipc/shm.c +++ b/ipc/shm.c @@ -27,6 +27,7 @@ #include <linux/shmem_fs.h> #include <linux/security.h> #include <linux/syscalls.h> +#include <linux/audit.h> #include <asm/uaccess.h> #include "util.h" @@ -600,6 +601,8 @@ asmlinkage long sys_shmctl (int shmid, int cmd, struct shmid_ds __user *buf) err = -EFAULT; goto out; } + if ((err = audit_ipc_perms(0, setbuf.uid, setbuf.gid, setbuf.mode))) + return err; down(&shm_ids.sem); shp = shm_lock(shmid); err=-EINVAL; |
