オープンソース・ソフトウェアの開発とダウンロード

Subversion リポジトリの参照

Diff of /trunk/1.5.x/ccs-patch/fs/tomoyo_signal.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 325 by kumaneko, Mon Aug 6 12:55:41 2007 UTC revision 328 by kumaneko, Wed Aug 8 11:12:12 2007 UTC
# Line 56  static int AddSignalEntry(const int sig, Line 56  static int AddSignalEntry(const int sig,
56          if (is_add) {          if (is_add) {
57                  if ((ptr = domain->first_acl_ptr) == NULL) goto first_entry;                  if ((ptr = domain->first_acl_ptr) == NULL) goto first_entry;
58                  while (1) {                  while (1) {
59                          struct signal_acl_record *new_ptr;                          struct signal_acl_record *new_ptr = (struct signal_acl_record *) ptr;
60                          if (ptr->type == TYPE_SIGNAL_ACL && ptr->u.w == hash && ptr->cond == condition) {                          if (ptr->type == TYPE_SIGNAL_ACL && new_ptr->sig == hash && ptr->cond == condition) {
61                                  if (!pathcmp(((struct signal_acl_record *) ptr)->domainname, saved_dest_pattern)) {                                  if (!pathcmp(new_ptr->domainname, saved_dest_pattern)) {
62                                          ptr->is_deleted = 0;                                          ptr->is_deleted = 0;
63                                          /* Found. Nothing to do. */                                          /* Found. Nothing to do. */
64                                          error = 0;                                          error = 0;
# Line 74  static int AddSignalEntry(const int sig, Line 74  static int AddSignalEntry(const int sig,
74                          /* Not found. Append it to the tail. */                          /* Not found. Append it to the tail. */
75                          if ((new_ptr = alloc_element(sizeof(*new_ptr))) == NULL) break;                          if ((new_ptr = alloc_element(sizeof(*new_ptr))) == NULL) break;
76                          new_ptr->head.type = TYPE_SIGNAL_ACL;                          new_ptr->head.type = TYPE_SIGNAL_ACL;
77                          new_ptr->head.u.w = hash;                          new_ptr->sig = hash;
78                          new_ptr->head.cond = condition;                          new_ptr->head.cond = condition;
79                          new_ptr->domainname = saved_dest_pattern;                          new_ptr->domainname = saved_dest_pattern;
80                          error = AddDomainACL(ptr, domain, (struct acl_info *) new_ptr);                          error = AddDomainACL(ptr, domain, (struct acl_info *) new_ptr);
# Line 83  static int AddSignalEntry(const int sig, Line 83  static int AddSignalEntry(const int sig,
83          } else {          } else {
84                  error = -ENOENT;                  error = -ENOENT;
85                  for (ptr = domain->first_acl_ptr; ptr; ptr = ptr->next) {                  for (ptr = domain->first_acl_ptr; ptr; ptr = ptr->next) {
86                          if (ptr->type != TYPE_SIGNAL_ACL || ptr->is_deleted || ptr->u.w != hash || ptr->cond != condition) continue;                          struct signal_acl_record *ptr2 = (struct signal_acl_record *) ptr;
87                          if (pathcmp(((struct signal_acl_record *) ptr)->domainname, saved_dest_pattern)) continue;                          if (ptr->type != TYPE_SIGNAL_ACL || ptr->is_deleted || ptr2->sig != hash || ptr->cond != condition) continue;
88                            if (pathcmp(ptr2->domainname, saved_dest_pattern)) continue;
89                          error = DelDomainACL(ptr);                          error = DelDomainACL(ptr);
90                          break;                          break;
91                  }                  }
# Line 124  int CheckSignalACL(const int sig, const Line 125  int CheckSignalACL(const int sig, const
125          }          }
126          dest_pattern = dest->domainname->name;          dest_pattern = dest->domainname->name;
127          for (ptr = domain->first_acl_ptr; ptr; ptr = ptr->next) {          for (ptr = domain->first_acl_ptr; ptr; ptr = ptr->next) {
128                  if (ptr->type == TYPE_SIGNAL_ACL && ptr->is_deleted == 0 && ptr->u.w == hash && CheckCondition(ptr->cond, NULL) == 0) {                  struct signal_acl_record *ptr2 = (struct signal_acl_record *) ptr;
129                          const int len = ((struct signal_acl_record *) ptr)->domainname->total_len;                  if (ptr->type == TYPE_SIGNAL_ACL && ptr->is_deleted == 0 && ptr2->sig == hash && CheckCondition(ptr->cond, NULL) == 0) {
130                          if (strncmp(((struct signal_acl_record *) ptr)->domainname->name, dest_pattern, len) == 0 && (dest_pattern[len] == ' ' || dest_pattern[len] == '\0')) break;                          const int len = ptr2->domainname->total_len;
131                            if (strncmp(ptr2->domainname->name, dest_pattern, len) == 0 && (dest_pattern[len] == ' ' || dest_pattern[len] == '\0')) break;
132                  }                  }
133          }          }
134          if (ptr) {          if (ptr) {

Legend:
Removed from v.325  
changed lines
  Added in v.328

Back to OSDN">Back to OSDN
ViewVC Help
Powered by ViewVC 1.1.26