1616 |
But to implement "Allow selecting a domain by PID" feature, I disabled |
But to implement "Allow selecting a domain by PID" feature, I disabled |
1617 |
concurrent read()/write() because the feature need to modify read buffer |
concurrent read()/write() because the feature need to modify read buffer |
1618 |
while writing. |
while writing. |
1619 |
|
|
1620 |
|
Fix 2008/10/01 |
1621 |
|
|
1622 |
|
@ Add retry counter into /proc/ccs/query . |
1623 |
|
|
1624 |
|
To be able to handle some of queries from /proc/ccs/query without user's |
1625 |
|
interaction, I added retry counter for avoiding infinite loop caused by |
1626 |
|
"try again" response. |
1627 |
|
|
1628 |
|
Fix 2008/10/07 |
1629 |
|
|
1630 |
|
@ Don't transit to new domain until do_execve() succeeds. |
1631 |
|
|
1632 |
|
Until now, a process's domain was updated to new domain which the process |
1633 |
|
will belongs to before do_execve() succeeds so that the kernel can do |
1634 |
|
permission checks for interpreters and environment variables based on |
1635 |
|
new domain. But this caused a subtle problem when other process sends |
1636 |
|
signals to the process, for the process returns to old domain if |
1637 |
|
do_execve() failed. |
1638 |
|
|
1639 |
|
So, I modified to pass new domain to functions so that I can avoid |
1640 |
|
modifying a process's domain before do_execve() succeeds. |
1641 |
|
|
1642 |
|
@ Use old task state for audit logs. |
1643 |
|
|
1644 |
|
Until now, audit logs were generated using the task state after |
1645 |
|
processing "; set task.state" part. But to generate accurate logs, |
1646 |
|
I modified to save the task state before processing "; set task.state" |
1647 |
|
part and use the saved state for audit logs. |
1648 |
|
|
1649 |
|
@ Use a structure for passing parameters. |
1650 |
|
|
1651 |
|
As the number of parameters is increasing, I modified to use a structure |
1652 |
|
for passing parameters. |
1653 |
|
|
1654 |
|
Fix 2008/10/11 |
1655 |
|
|
1656 |
|
@ Remove domain_acl_lock mutex. |
1657 |
|
|
1658 |
|
I noticed that I don't need to keep all functions that modify an ACL of |
1659 |
|
a domain mutually exclusive. Since each functions handles different type |
1660 |
|
of ACL, locking is needed only when they append an ACL to a domain. |
1661 |
|
So, I modified to use local locks. |
1662 |
|
|
1663 |
|
Fix 2008/10/14 |
1664 |
|
|
1665 |
|
@ Fix ccs_check_condition() bug. |
1666 |
|
|
1667 |
|
Due to a bug in ccs_check_condition(), it was impossible to use |
1668 |
|
task.state[0] task.state[1] task.state[2] inside condition part |
1669 |
|
if the ACL does not treat a pathname. For example, an ACL like |
1670 |
|
|
1671 |
|
allow_network TCP connect @HTTP_SERVERS 80 if task.state[0]=100 |
1672 |
|
|
1673 |
|
didn't work. |
1674 |
|
|
1675 |
|
Fix 2008/10/15 |
1676 |
|
|
1677 |
|
@ Show process information in /proc/ccs/.process_status . |
1678 |
|
|
1679 |
|
To be able to determine a process's type, I added a command "info PID" |
1680 |
|
which returns process information of the specified PID in |
1681 |
|
"PID manager=\* execute_handler=\* state[0]=\$ state[1]=\$ state[2]=\$" |
1682 |
|
format. |
1683 |
|
|
1684 |
|
Fix 2008/10/20 |
1685 |
|
|
1686 |
|
@ Use rcu_dereference() when walking the list. |
1687 |
|
|
1688 |
|
I was using "dependency ordering" for appending an element to a list |
1689 |
|
without asking the reader to take a lock. But "dependency ordering" |
1690 |
|
is not respected by DEC Alpha or by some aggressive value-speculation |
1691 |
|
compiler optimizations. |
1692 |
|
|
1693 |
|
On such environment, use of "dependency ordering" can lead to system |
1694 |
|
crash because the reader might read uninitialized value of newly |
1695 |
|
appended element. |
1696 |
|
|
1697 |
|
To prevent the reader from reading uninitialized value of newly appended |
1698 |
|
element, I inserted rcu_dereference() when walking the list. |
1699 |
|
|
1700 |
|
Fix 2008/11/04 |
1701 |
|
|
1702 |
|
@ Use sys_getpid() instead for current->pid. |
1703 |
|
|
1704 |
|
Kernel 2.6.24 introduced PID namespace. |
1705 |
|
|
1706 |
|
To compare PID given from userland, I can't use current->pid. |
1707 |
|
So, I modified to use sys_getpid() instead for current->pid. |
1708 |
|
|
1709 |
|
I modified to use task_tgid_nr_ns() for 2.6.25 and later instead for |
1710 |
|
current->tgid when checking /proc/self/ in get_absolute_path(). |
1711 |
|
|
1712 |
|
Fix 2008/11/07 |
1713 |
|
|
1714 |
|
@ Fix is_alphabet_char(). |
1715 |
|
|
1716 |
|
is_alphabet_char() should match 'A' - 'Z' and 'a' - 'z', |
1717 |
|
but was matching from 'A' - 'F' and 'a' - 'f'. |
1718 |
|
|
1719 |
|
Version 1.6.5 2008/11/?? Third anniversary release. |