1804 |
As remove_arg_zero() uses kmap_atomic(KM_USER0), I modified to use |
As remove_arg_zero() uses kmap_atomic(KM_USER0), I modified to use |
1805 |
kmap_atomic(KM_USER0) rather than kmap(). |
kmap_atomic(KM_USER0) rather than kmap(). |
1806 |
|
|
|
@ Relocate definitions and functions. |
|
|
|
|
|
To reduce exposed symbols, I relocated some definitions and functions. |
|
|
|
|
1807 |
Fix 2009/01/28 |
Fix 2009/01/28 |
1808 |
|
|
1809 |
@ Fix "allow_read" + "allow_write" != "allow_read/write" problem. |
@ Fix "allow_read" + "allow_write" != "allow_read/write" problem. |
1844 |
|
|
1845 |
Thus, I modified to show only profile entry names ever specified. |
Thus, I modified to show only profile entry names ever specified. |
1846 |
|
|
1847 |
Version 1.6.7 2009/??/?? Feature enhancement release. |
Fix 2009/03/18 |
1848 |
|
|
1849 |
|
@ Add MAC_FOR_IOCTL functionality. |
1850 |
|
|
1851 |
|
To be able to restrict ioctl() requests, I added MAC_FOR_IOCTL |
1852 |
|
functionality. |
1853 |
|
|
1854 |
|
This functionality requires modification of ccs-patch-\*.diff . |
1855 |
|
|
1856 |
|
@ Use better name for socket's pathname. |
1857 |
|
|
1858 |
|
Until now, socket's pathname was represented as "socket:[\$]" format |
1859 |
|
where \$ is inode's number. But inode's number is useless for name based |
1860 |
|
access control. Therefore, I modified to represent socket's pathname as |
1861 |
|
"socket:[family=\$:type=\$:protocol=\$]" format. |
1862 |
|
|
1863 |
|
This will help administrator to control ioctl() against sockets more |
1864 |
|
precisely. |
1865 |
|
|
1866 |
|
@ Fix misplaced ccs_capable() call. (only 2.6.8-\* and 2.6.9-\*) |
1867 |
|
|
1868 |
|
Location to insert ccs_capable(TOMOYO_SYS_IOCTL) in sys_ioctl() was |
1869 |
|
wrong since version 1.1 . |
1870 |
|
|
1871 |
|
@ Insert ccs_check_ioctl_permission() call. |
1872 |
|
|
1873 |
|
To make MAC_FOR_IOCTL functionality working, I inserted |
1874 |
|
ccs_check_ioctl_permission() call into ccs-patch-\*.diff . |
1875 |
|
|
1876 |
|
Fix 2009/03/23 |
1877 |
|
|
1878 |
|
@ Move sysctl()'s check from ccs-patch-\*.diff to fs/tomoyo_file.c . |
1879 |
|
|
1880 |
|
Since try_parse_table() in kernel/sysctl.c is almost identical between |
1881 |
|
all versions, I moved that function to fs/tomoyo_file.c . |
1882 |
|
|
1883 |
|
@ Relocate definitions and functions. |
1884 |
|
|
1885 |
|
To reduce exposed symbols, I relocated some definitions and functions. |
1886 |
|
|
1887 |
|
Fix 2009/03/24 |
1888 |
|
|
1889 |
|
@ Add CONFIG_TOMOYO_BUILTIN_INITIALIZERS option. |
1890 |
|
|
1891 |
|
Some systems don't have /sbin/modprobe and /sbin/hotplug . |
1892 |
|
Thus, I made these pathnames configurable. |
1893 |
|
|
1894 |
|
Version 1.6.7 2009/04/01 Feature enhancement release. |
1895 |
|
|
1896 |
|
Fix 2009/04/06 |
1897 |
|
|
1898 |
|
@ Drop "undelete domain" command. |
1899 |
|
|
1900 |
|
I added "undelete domain" command on 2007/01/19, but never used by policy |
1901 |
|
management tools. The garbage collector I added on 2007/01/29 will |
1902 |
|
automatically reuse memory and allow administrators switch domain policy |
1903 |
|
periodically, provided that the administrator kills processes in old |
1904 |
|
domains before recreating new domains with the same domainnames. |
1905 |
|
|
1906 |
|
Thus, I dropped "undelete domain" command. |
1907 |
|
|
1908 |
|
@ Escape invalid characters in ccs_check_mount_permission2(). |
1909 |
|
|
1910 |
|
ccs_check_mount_permission2() was passing unencoded strings to printk() |
1911 |
|
and ccs_update_mount_acl() and ccs_check_supervisor(). This may cause |
1912 |
|
/proc/ccs/system_policy and /proc/ccs/query to contain invalid |
1913 |
|
characters within a string. |
1914 |
|
|
1915 |
|
Fix 2009/04/07 |
1916 |
|
|
1917 |
|
@ Fix IPv4's "address_group" handling error. |
1918 |
|
|
1919 |
|
Since 1.6.5 , due to lack of ntohl() (byte order conversion) in |
1920 |
|
ccs_update_address_group_entry(), "address_group" with IPv4 address was |
1921 |
|
not working. |
1922 |
|
|
1923 |
|
This problem happens on little endian platforms (e.g. x86). |
1924 |
|
|
1925 |
|
Fix 2009/05/08 |
1926 |
|
|
1927 |
|
@ Add condition for symlink's target pathname. |
1928 |
|
|
1929 |
|
Until now, "allow_symlink" keyword allows creation of a symlink but does |
1930 |
|
not check the symlink's target. Usually it is no problem because |
1931 |
|
permission checks are done using dereferenced pathname. But in some |
1932 |
|
cases, we should restrict the symlink's target. For example, |
1933 |
|
"ln -s .htpasswd /var/www/html/readme.html" by CGI program should be |
1934 |
|
blocked because we will allow Apache to read both |
1935 |
|
/var/www/html/readme.html and /var/www/html/.htpasswd . |
1936 |
|
|
1937 |
|
Thus, I added new condition, "symlink.target". |
1938 |
|
|
1939 |
|
allow_symlink /var/www/html/\*.html if symlink.target="\*.html" |
1940 |
|
|
1941 |
|
allow_symlink /var/www/html/\*\-.\* if symlink.target="\*\-.\*" |
1942 |
|
|
1943 |
|
@ Don't return -EAGAIN at ccs_socket_recvmsg_permission(). |
1944 |
|
|
1945 |
|
It turned out that it is not permitted for accept() and recvmsg() to |
1946 |
|
return -EAGAIN if poll() said connections/datagrams are ready. However, |
1947 |
|
recvmsg() may return -EAGAIN and potentially confuse some applications |
1948 |
|
because ccs_socket_recvmsg_permission() is returning -EAGAIN. |
1949 |
|
|
1950 |
|
Thus, I modified ccs_socket_recvmsg_permission() to return -ENOMEM |
1951 |
|
rather than -EAGAIN. |
1952 |
|
|
1953 |
|
Fix 2009/05/19 |
1954 |
|
|
1955 |
|
@ Don't call get_fs_type() with a mutex held. |
1956 |
|
|
1957 |
|
Until now, when ccs_update_mount_acl() is called with unsupported |
1958 |
|
filesystem, /sbin/modprobe is executed from get_fs_type() to load |
1959 |
|
filesystem module. And get_fs_type() does not return until /sbin/modprobe |
1960 |
|
finishes. |
1961 |
|
|
1962 |
|
This means that it will cause deadlock if /sbin/modprobe (which is |
1963 |
|
executed via get_fs_type() in ccs_update_mount_acl()) calls |
1964 |
|
ccs_update_mount_acl(); although it won't happen unless an administrator |
1965 |
|
inserts execute_handler to call mount() requests in learning mode or to |
1966 |
|
add "allow_mount" entries to /proc/ccs/system_policy . |
1967 |
|
|
1968 |
|
I modified to unlock the mutex before calling get_fs_type(). |
1969 |
|
|
1970 |
|
Fix 2009/05/20 |
1971 |
|
|
1972 |
|
@ Update recvmsg() hooks. |
1973 |
|
|
1974 |
|
Since 1.5.0, I was doing network access control for incoming UDP and RAW |
1975 |
|
packets inside skb_recv_datagram(). But to synchronize with LSM version, |
1976 |
|
I moved ccs_recv_datagram_permission() hook from skb_recv_datagram() to |
1977 |
|
udp_recvmsg()/udpv6_recvmsg()/raw_recvmsg()/rawv6_recvmsg() with name |
1978 |
|
change to ccs_recvmsg_permission(). |
1979 |
|
|
1980 |
|
Version 1.6.8 2009/05/28 Feature enhancement release. |
1981 |
|
|
1982 |
|
Fix 2009/07/03 |
1983 |
|
|
1984 |
|
@ Fix buffer overrun when used with CONFIG_SLOB=y . |
1985 |
|
|
1986 |
|
Since 1.6.7 , ccs_allocate_execve_entry() was requesting for only 4000 |
1987 |
|
bytes while the comment says it is 4096 bytes. This may lead to buffer |
1988 |
|
overrun when slob allocator is used, for slob allocator allocates exactly |
1989 |
|
4000 bytes whereas slab and slub allocators allocate 4096 bytes. |