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. |
1852 |
functionality. |
functionality. |
1853 |
|
|
1854 |
This functionality requires modification of ccs-patch-\*.diff . |
This functionality requires modification of ccs-patch-\*.diff . |
|
Therefore, this functionality will not work if you are using old |
|
|
ccs-patch-\*.diff . |
|
1855 |
|
|
1856 |
@ Use better name for socket's pathname. |
@ Use better name for socket's pathname. |
1857 |
|
|
1870 |
|
|
1871 |
@ Insert ccs_check_ioctl_permission() call. |
@ Insert ccs_check_ioctl_permission() call. |
1872 |
|
|
1873 |
To enable MAC_FOR_IOCTL functionality work, I inserted |
To make MAC_FOR_IOCTL functionality working, I inserted |
1874 |
ccs_check_ioctl_permission() call into ccs-patch-\*.diff . |
ccs_check_ioctl_permission() call into ccs-patch-\*.diff . |
1875 |
|
|
1876 |
Version 1.6.7 2009/??/?? Feature enhancement release. |
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/04/20 |
1926 |
|
|
1927 |
|
@ Update recvmsg() hooks. |
1928 |
|
|
1929 |
|
Since 1.5.0, I was doing network access control for incoming UDP and RAW |
1930 |
|
packets inside skb_recv_datagram(). But to synchronize with LSM version, |
1931 |
|
I moved ccs_recv_datagram_permission() hook from skb_recv_datagram() to |
1932 |
|
udp_recvmsg()/udpv6_recvmsg()/raw_recvmsg()/rawv6_recvmsg() with name |
1933 |
|
change to ccs_recvmsg_permission(). |
1934 |
|
|
1935 |
|
Fix 2009/05/08 |
1936 |
|
|
1937 |
|
@ Add condition for symlink's target pathname. |
1938 |
|
|
1939 |
|
Until now, "allow_symlink" keyword allows creation of a symlink but does |
1940 |
|
not check the symlink's target. Usually it is no problem because |
1941 |
|
permission checks are done using dereferenced pathname. But in some |
1942 |
|
cases, we should restrict the symlink's target. For example, |
1943 |
|
"ln -s .htpasswd /var/www/html/readme.html" by CGI program should be |
1944 |
|
blocked because we will allow Apache to read both |
1945 |
|
/var/www/html/readme.html and /var/www/html/.htpasswd . |
1946 |
|
|
1947 |
|
Thus, I added new condition, "symlink.target". |
1948 |
|
|
1949 |
|
allow_symlink /var/www/html/\*.html if symlink.target="\*.html" |
1950 |
|
|
1951 |
|
allow_symlink /var/www/html/\*\-.\* if symlink.target="\*\-.\*" |
1952 |
|
|
1953 |
|
@ Don't return -EAGAIN at ccs_socket_recvmsg_permission(). |
1954 |
|
|
1955 |
|
It turned out that it is not permitted for accept() and recvmsg() to |
1956 |
|
return -EAGAIN if poll() said connections/datagrams are ready. However, |
1957 |
|
recvmsg() may return -EAGAIN and potentially confuse some applications |
1958 |
|
because ccs_socket_recvmsg_permission() is returning -EAGAIN. |
1959 |
|
|
1960 |
|
Thus, I modified ccs_socket_recvmsg_permission() to return -ENOMEM |
1961 |
|
rather than -EAGAIN. |