diff options
author | Amy Griffis <amy.griffis@hp.com> | 2007-02-13 14:15:01 -0500 |
---|---|---|
committer | Al Viro <viro@zeniv.linux.org.uk> | 2007-05-11 05:38:26 -0400 |
commit | 4fc03b9beb2314f3adb9e72b7935a80c577954d1 (patch) | |
tree | 81e04534c582923fcdc8212497d1487ddae412a8 /ipc | |
parent | 510f4006e7a82b37b53c17bbe64ec20f3a59302b (diff) |
[PATCH] complete message queue auditing
Handle the edge cases for POSIX message queue auditing. Collect inode
info when opening an existing mq, and for send/receive operations. Remove
audit_inode_update() as it has really evolved into the equivalent of
audit_inode().
Signed-off-by: Amy Griffis <amy.griffis@hp.com>
Signed-off-by: Al Viro <viro@zeniv.linux.org.uk>
Diffstat (limited to 'ipc')
-rw-r--r-- | ipc/mqueue.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/ipc/mqueue.c b/ipc/mqueue.c index d17821d3f483..fab5707cb5f7 100644 --- a/ipc/mqueue.c +++ b/ipc/mqueue.c | |||
@@ -681,6 +681,7 @@ asmlinkage long sys_mq_open(const char __user *u_name, int oflag, mode_t mode, | |||
681 | 681 | ||
682 | if (oflag & O_CREAT) { | 682 | if (oflag & O_CREAT) { |
683 | if (dentry->d_inode) { /* entry already exists */ | 683 | if (dentry->d_inode) { /* entry already exists */ |
684 | audit_inode(name, dentry->d_inode); | ||
684 | error = -EEXIST; | 685 | error = -EEXIST; |
685 | if (oflag & O_EXCL) | 686 | if (oflag & O_EXCL) |
686 | goto out; | 687 | goto out; |
@@ -693,6 +694,7 @@ asmlinkage long sys_mq_open(const char __user *u_name, int oflag, mode_t mode, | |||
693 | error = -ENOENT; | 694 | error = -ENOENT; |
694 | if (!dentry->d_inode) | 695 | if (!dentry->d_inode) |
695 | goto out; | 696 | goto out; |
697 | audit_inode(name, dentry->d_inode); | ||
696 | filp = do_open(dentry, oflag); | 698 | filp = do_open(dentry, oflag); |
697 | } | 699 | } |
698 | 700 | ||
@@ -840,6 +842,7 @@ asmlinkage long sys_mq_timedsend(mqd_t mqdes, const char __user *u_msg_ptr, | |||
840 | if (unlikely(filp->f_op != &mqueue_file_operations)) | 842 | if (unlikely(filp->f_op != &mqueue_file_operations)) |
841 | goto out_fput; | 843 | goto out_fput; |
842 | info = MQUEUE_I(inode); | 844 | info = MQUEUE_I(inode); |
845 | audit_inode(NULL, inode); | ||
843 | 846 | ||
844 | if (unlikely(!(filp->f_mode & FMODE_WRITE))) | 847 | if (unlikely(!(filp->f_mode & FMODE_WRITE))) |
845 | goto out_fput; | 848 | goto out_fput; |
@@ -923,6 +926,7 @@ asmlinkage ssize_t sys_mq_timedreceive(mqd_t mqdes, char __user *u_msg_ptr, | |||
923 | if (unlikely(filp->f_op != &mqueue_file_operations)) | 926 | if (unlikely(filp->f_op != &mqueue_file_operations)) |
924 | goto out_fput; | 927 | goto out_fput; |
925 | info = MQUEUE_I(inode); | 928 | info = MQUEUE_I(inode); |
929 | audit_inode(NULL, inode); | ||
926 | 930 | ||
927 | if (unlikely(!(filp->f_mode & FMODE_READ))) | 931 | if (unlikely(!(filp->f_mode & FMODE_READ))) |
928 | goto out_fput; | 932 | goto out_fput; |