1931 |
I moved ccs_recv_datagram_permission() hook from skb_recv_datagram() to |
I moved ccs_recv_datagram_permission() hook from skb_recv_datagram() to |
1932 |
udp_recvmsg()/udpv6_recvmsg()/raw_recvmsg()/rawv6_recvmsg() with name |
udp_recvmsg()/udpv6_recvmsg()/raw_recvmsg()/rawv6_recvmsg() with name |
1933 |
change to ccs_recvmsg_permission(). |
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. |