]> bbs.cooldavid.org Git - net-next-2.6.git/blobdiff - security/tomoyo/path_group.c
TOMOYO: Use common structure for list element.
[net-next-2.6.git] / security / tomoyo / path_group.c
index c988041c8e1c2e59e7f81cb296283dd0dfe5d393..7838f7681297406731926dbf54a9e12c187cc0d2 100644 (file)
@@ -6,7 +6,7 @@
 
 #include <linux/slab.h>
 #include "common.h"
-/* The list for "struct ccs_path_group". */
+/* The list for "struct tomoyo_path_group". */
 LIST_HEAD(tomoyo_path_group_list);
 
 /**
@@ -22,8 +22,7 @@ struct tomoyo_path_group *tomoyo_get_path_group(const char *group_name)
        struct tomoyo_path_group *group = NULL;
        const struct tomoyo_path_info *saved_group_name;
        int error = -ENOMEM;
-       if (!tomoyo_is_correct_path(group_name, 0, 0, 0) ||
-           !group_name[0])
+       if (!tomoyo_is_correct_word(group_name))
                return NULL;
        saved_group_name = tomoyo_get_name(group_name);
        if (!saved_group_name)
@@ -80,10 +79,10 @@ int tomoyo_write_path_group_policy(char *data, const bool is_delete)
                goto out;
        if (mutex_lock_interruptible(&tomoyo_policy_lock))
                goto out;
-       list_for_each_entry_rcu(member, &group->member_list, list) {
+       list_for_each_entry_rcu(member, &group->member_list, head.list) {
                if (member->member_name != e.member_name)
                        continue;
-               member->is_deleted = is_delete;
+               member->head.is_deleted = is_delete;
                error = 0;
                break;
        }
@@ -91,7 +90,8 @@ int tomoyo_write_path_group_policy(char *data, const bool is_delete)
                struct tomoyo_path_group_member *entry =
                        tomoyo_commit_ok(&e, sizeof(e));
                if (entry) {
-                       list_add_tail_rcu(&entry->list, &group->member_list);
+                       list_add_tail_rcu(&entry->head.list,
+                                         &group->member_list);
                        error = 0;
                }
        }
@@ -123,8 +123,8 @@ bool tomoyo_read_path_group_policy(struct tomoyo_io_buffer *head)
                        struct tomoyo_path_group_member *member;
                        member = list_entry(mpos,
                                            struct tomoyo_path_group_member,
-                                           list);
-                       if (member->is_deleted)
+                                           head.list);
+                       if (member->head.is_deleted)
                                continue;
                        if (!tomoyo_io_printf(head, TOMOYO_KEYWORD_PATH_GROUP
                                              "%s %s\n",
@@ -141,29 +141,21 @@ bool tomoyo_read_path_group_policy(struct tomoyo_io_buffer *head)
  *
  * @pathname:        The name of pathname.
  * @group:           Pointer to "struct tomoyo_path_group".
- * @may_use_pattern: True if wild card is permitted.
  *
  * Returns true if @pathname matches pathnames in @group, false otherwise.
  *
  * Caller holds tomoyo_read_lock().
  */
 bool tomoyo_path_matches_group(const struct tomoyo_path_info *pathname,
-                              const struct tomoyo_path_group *group,
-                              const bool may_use_pattern)
+                              const struct tomoyo_path_group *group)
 {
        struct tomoyo_path_group_member *member;
        bool matched = false;
-       list_for_each_entry_rcu(member, &group->member_list, list) {
-               if (member->is_deleted)
+       list_for_each_entry_rcu(member, &group->member_list, head.list) {
+               if (member->head.is_deleted)
                        continue;
-               if (!member->member_name->is_patterned) {
-                       if (tomoyo_pathcmp(pathname, member->member_name))
-                               continue;
-               } else if (may_use_pattern) {
-                       if (!tomoyo_path_matches_pattern(pathname,
-                                                        member->member_name))
-                               continue;
-               } else
+               if (!tomoyo_path_matches_pattern(pathname,
+                                                member->member_name))
                        continue;
                matched = true;
                break;