1916 |
|
|
1917 |
@ Fix IPv4's "address_group" handling error. |
@ Fix IPv4's "address_group" handling error. |
1918 |
|
|
1919 |
Since 1.4 , due to lack of ntohl() (byte order conversion) in |
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 |
ccs_update_address_group_entry(), "address_group" with IPv4 address was |
1921 |
not working. |
not working. |
1922 |
|
|
1923 |
This problem happens on little endian platforms (e.g. x86). |
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. |