diff options
author | Stephen D. Smalley <sds@tislabs.com> | 2002-10-08 00:10:38 -0700 |
---|---|---|
committer | Linus Torvalds <torvalds@home.transmeta.com> | 2002-10-08 00:10:38 -0700 |
commit | f9274840e891fe6567548cf3eda1ad9d7eda87ed (patch) | |
tree | 09e178ec97a6748bb6be6363334428dbe87c3a4d /security | |
parent | c4f59ba523fd5ff36982f13fb7efad82cec51718 (diff) | |
download | history-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.c | 46 | ||||
-rw-r--r-- | security/dummy.c | 47 |
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, }; |