TOMOYO Linux is a Mandatory Access Control (MAC) implementation for Linux that can be used to increase the security of a system, while also being useful purely as a system analysis tool. It was launched in March 2003 and had been sponsored by NTT DATA Corporation, Japan until March 2012.
TOMOYO Linux focuses on the behaviour of a system. Every process is created to achieve a purpose, and like an immigration officer, TOMOYO Linux allows each process to declare behaviours and resources needed to achieve their purpose. When protection is enabled, TOMOYO Linux acts like an operation watchdog, restricting each process to only the behaviours and resources allowed by the administrator.
@ Return appropriate error code for CheckMountPermission().
I was returning -EPERM if something is wrong with CheckMountPermission().
But SELinux determines whether selinuxfs is supported by kernel
based on whether error code is -ENODEV or not.
So I stopped returning -EPERM unconditionally.
@ Fix "allow_argv0 ... if if ..." bug.
It was impossible to use a word "if" to the second argument of
allow_argv0 if condition part is used.
@ Update recvmsg() hooks.
Until now, it was impossible to apply network access control for
incoming UDP and RAW packets if they are brought to userland using
read() or recvmsg() with NULL address because address buffer is NULL.
I moved hooks from sock_recvmsg() to skb_recv_datagram() so that
network access control for incoming UDP and RAW packets always work.
@ Drop MSG_PEEK'ed message before skb_free_datagram().
I need to remove head message from unwanted source
from socket's receive queue so that the caller can pick up
next message from wanted source with MSG_PEEK flags.
@ Avoid eating memory after quota exceeded.
Although ACL entries in a domain won't be added if the domain's quota
has exceeded, SaveName() in AddFileACL() is called anyway.
This caused unneeded memory consumption.
Now, quota checking is done before getting domain_acl_lock lock.
This may exceed quota by one or two entries, but that won't matter.
@ Add missing down() in AddReservedEntry().
Mutex debugging capability told me that I had forgotten to call down()
since TOMOYO version 1.3.2 .
This function is not called by learning mode,
so the semaphore's counter will not overflow for normal usage.
Version 1.4.3 2007/11/11 Bug fix release.