aboutsummaryrefslogtreecommitdiffstats
path: root/security
diff options
context:
space:
mode:
authorStephen D. Smalley <sds@tislabs.com>2002-10-08 00:10:38 -0700
committerLinus Torvalds <torvalds@home.transmeta.com>2002-10-08 00:10:38 -0700
commitf9274840e891fe6567548cf3eda1ad9d7eda87ed (patch)
tree09e178ec97a6748bb6be6363334428dbe87c3a4d /security
parentc4f59ba523fd5ff36982f13fb7efad82cec51718 (diff)
downloadhistory-f9274840e891fe6567548cf3eda1ad9d7eda87ed.tar.gz
[PATCH] Base set of LSM hooks for SysV IPC
The patch below adds the base set of LSM hooks for System V IPC to the 2.5.41 kernel. These hooks permit a security module to label semaphore sets, message queues, and shared memory segments and to perform security checks on these objects that parallel the existing IPC access checks. Additional LSM hooks for labeling and controlling individual messages sent on a single message queue and for providing fine-grained distinctions among IPC operations will be submitted separately after this base set of LSM IPC hooks has been accepted.
Diffstat (limited to 'security')
-rw-r--r--security/capability.c46
-rw-r--r--security/dummy.c47
2 files changed, 93 insertions, 0 deletions
diff --git a/security/capability.c b/security/capability.c
index 774972458ffd79..6f9b25ba65bdd3 100644
--- a/security/capability.c
+++ b/security/capability.c
@@ -679,6 +679,41 @@ static void cap_task_reparent_to_init (struct task_struct *p)
return;
}
+static int cap_ipc_permission (struct kern_ipc_perm *ipcp, short flag)
+{
+ return 0;
+}
+
+static int cap_msg_queue_alloc_security (struct msg_queue *msq)
+{
+ return 0;
+}
+
+static void cap_msg_queue_free_security (struct msg_queue *msq)
+{
+ return;
+}
+
+static int cap_shm_alloc_security (struct shmid_kernel *shp)
+{
+ return 0;
+}
+
+static void cap_shm_free_security (struct shmid_kernel *shp)
+{
+ return;
+}
+
+static int cap_sem_alloc_security (struct sem_array *sma)
+{
+ return 0;
+}
+
+static void cap_sem_free_security (struct sem_array *sma)
+{
+ return;
+}
+
static int cap_register (const char *name, struct security_operations *ops)
{
return -EINVAL;
@@ -782,6 +817,17 @@ static struct security_operations capability_ops = {
.task_kmod_set_label = cap_task_kmod_set_label,
.task_reparent_to_init = cap_task_reparent_to_init,
+ .ipc_permission = cap_ipc_permission,
+
+ .msg_queue_alloc_security = cap_msg_queue_alloc_security,
+ .msg_queue_free_security = cap_msg_queue_free_security,
+
+ .shm_alloc_security = cap_shm_alloc_security,
+ .shm_free_security = cap_shm_free_security,
+
+ .sem_alloc_security = cap_sem_alloc_security,
+ .sem_free_security = cap_sem_free_security,
+
.register_security = cap_register,
.unregister_security = cap_unregister,
};
diff --git a/security/dummy.c b/security/dummy.c
index fbca453a2b3f2e..0b3ca57db95b32 100644
--- a/security/dummy.c
+++ b/security/dummy.c
@@ -493,6 +493,42 @@ static void dummy_task_reparent_to_init (struct task_struct *p)
return;
}
+static int dummy_ipc_permission (struct kern_ipc_perm *ipcp, short flag)
+{
+ return 0;
+}
+
+
+static int dummy_msg_queue_alloc_security (struct msg_queue *msq)
+{
+ return 0;
+}
+
+static void dummy_msg_queue_free_security (struct msg_queue *msq)
+{
+ return;
+}
+
+static int dummy_shm_alloc_security (struct shmid_kernel *shp)
+{
+ return 0;
+}
+
+static void dummy_shm_free_security (struct shmid_kernel *shp)
+{
+ return;
+}
+
+static int dummy_sem_alloc_security (struct sem_array *sma)
+{
+ return 0;
+}
+
+static void dummy_sem_free_security (struct sem_array *sma)
+{
+ return;
+}
+
static int dummy_register (const char *name, struct security_operations *ops)
{
return -EINVAL;
@@ -596,6 +632,17 @@ struct security_operations dummy_security_ops = {
.task_kmod_set_label = dummy_task_kmod_set_label,
.task_reparent_to_init = dummy_task_reparent_to_init,
+ .ipc_permission = dummy_ipc_permission,
+
+ .msg_queue_alloc_security = dummy_msg_queue_alloc_security,
+ .msg_queue_free_security = dummy_msg_queue_free_security,
+
+ .shm_alloc_security = dummy_shm_alloc_security,
+ .shm_free_security = dummy_shm_free_security,
+
+ .sem_alloc_security = dummy_sem_alloc_security,
+ .sem_free_security = dummy_sem_free_security,
+
.register_security = dummy_register,
.unregister_security = dummy_unregister,
};