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

Subversion リポジトリの参照

Diff of /trunk/1.8.x/ccs-patch/security/ccsecurity/policy_io.c

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

revision 3748 by kumaneko, Thu Jun 10 03:54:43 2010 UTC revision 3752 by kumaneko, Fri Jun 11 05:46:17 2010 UTC
# Line 1823  static void ccs_read_pid(struct ccs_io_b Line 1823  static void ccs_read_pid(struct ccs_io_b
1823                                (u8) (ccs_flags >> 8));                                (u8) (ccs_flags >> 8));
1824  }  }
1825    
1826    static const char *ccs_transition_type[CCS_MAX_TRANSITION_TYPE] = {
1827            [CCS_TRANSITION_CONTROL_INITIALIZE] = CCS_KEYWORD_INITIALIZE_DOMAIN,
1828            [CCS_TRANSITION_CONTROL_NO_INITIALIZE]
1829            = CCS_KEYWORD_NO_INITIALIZE_DOMAIN,
1830            [CCS_TRANSITION_CONTROL_KEEP] = CCS_KEYWORD_KEEP_DOMAIN,
1831            [CCS_TRANSITION_CONTROL_NO_KEEP] = CCS_KEYWORD_NO_KEEP_DOMAIN
1832    };
1833    
1834    static const char *ccs_group_name[CCS_MAX_GROUP] = {
1835            [CCS_PATH_GROUP] = CCS_KEYWORD_PATH_GROUP,
1836            [CCS_NUMBER_GROUP] = CCS_KEYWORD_NUMBER_GROUP,
1837            [CCS_ADDRESS_GROUP] = CCS_KEYWORD_ADDRESS_GROUP
1838    };
1839    
1840  /**  /**
1841   * ccs_write_exception - Write exception policy.   * ccs_write_exception - Write exception policy.
1842   *   *
# Line 1837  static int ccs_write_exception(struct cc Line 1851  static int ccs_write_exception(struct cc
1851          u8 i;          u8 i;
1852          static const struct {          static const struct {
1853                  const char *keyword;                  const char *keyword;
1854                  int (*write) (char *, const bool, const u8);                  int (*write) (char *, const bool);
1855          } ccs_callback[8] = {          } ccs_callback[4] = {
                 { CCS_KEYWORD_NO_KEEP_DOMAIN, ccs_write_domain_keeper },  
                 { CCS_KEYWORD_NO_INITIALIZE_DOMAIN,  
                   ccs_write_domain_initializer },  
                 { CCS_KEYWORD_KEEP_DOMAIN, ccs_write_domain_keeper },  
                 { CCS_KEYWORD_INITIALIZE_DOMAIN,  
                   ccs_write_domain_initializer },  
1856                  { CCS_KEYWORD_AGGREGATOR, ccs_write_aggregator },                  { CCS_KEYWORD_AGGREGATOR, ccs_write_aggregator },
1857                  { CCS_KEYWORD_FILE_PATTERN, ccs_write_pattern },                  { CCS_KEYWORD_FILE_PATTERN, ccs_write_pattern },
1858                  { CCS_KEYWORD_DENY_REWRITE, ccs_write_no_rewrite },                  { CCS_KEYWORD_DENY_REWRITE, ccs_write_no_rewrite },
1859                  { CCS_KEYWORD_DENY_AUTOBIND, ccs_write_reserved_port }                  { CCS_KEYWORD_DENY_AUTOBIND, ccs_write_reserved_port }
1860          };          };
1861          static const char *ccs_name[CCS_MAX_GROUP] = {          for (i = 0; i < 4; i++) {
                 [CCS_PATH_GROUP] = CCS_KEYWORD_PATH_GROUP,  
                 [CCS_NUMBER_GROUP] = CCS_KEYWORD_NUMBER_GROUP,  
                 [CCS_ADDRESS_GROUP] = CCS_KEYWORD_ADDRESS_GROUP  
         };  
         for (i = 0; i < 8; i++) {  
1862                  if (ccs_str_starts(&data, ccs_callback[i].keyword))                  if (ccs_str_starts(&data, ccs_callback[i].keyword))
1863                          return ccs_callback[i].write(data, is_delete, i < 2);                          return ccs_callback[i].write(data, is_delete);
1864            }
1865            for (i = 0; i < CCS_MAX_TRANSITION_TYPE; i++) {
1866                    if (ccs_str_starts(&data, ccs_transition_type[i]))
1867                            return ccs_write_transition_control(data, is_delete,
1868                                                                i);
1869          }          }
1870          for (i = 0; i < CCS_MAX_GROUP; i++) {          for (i = 0; i < CCS_MAX_GROUP; i++) {
1871                  if (ccs_str_starts(&data, ccs_name[i]))                  if (ccs_str_starts(&data, ccs_group_name[i]))
1872                          return ccs_write_group(data, is_delete, i);                          return ccs_write_group(data, is_delete, i);
1873          }          }
1874          return ccs_write_domain2(data, &ccs_global_domain, is_delete);          return ccs_write_domain2(data, &ccs_global_domain, is_delete);
# Line 1881  static bool ccs_read_group(struct ccs_io Line 1889  static bool ccs_read_group(struct ccs_io
1889          struct list_head *gpos;          struct list_head *gpos;
1890          struct list_head *mpos;          struct list_head *mpos;
1891          const char *w[3] = { "", "", "" };          const char *w[3] = { "", "", "" };
1892          if (idx == CCS_PATH_GROUP)          w[0] = ccs_group_name[idx];
                 w[0] = CCS_KEYWORD_PATH_GROUP;  
         else if (idx == CCS_NUMBER_GROUP)  
                 w[0] = CCS_KEYWORD_NUMBER_GROUP;  
         else if (idx == CCS_ADDRESS_GROUP)  
                 w[0] = CCS_KEYWORD_ADDRESS_GROUP;  
1893          list_for_each_cookie(gpos, head->read_var1, &ccs_group_list[idx]) {          list_for_each_cookie(gpos, head->read_var1, &ccs_group_list[idx]) {
1894                  struct ccs_group *group =                  struct ccs_group *group =
1895                          list_entry(gpos, struct ccs_group, head.list);                          list_entry(gpos, struct ccs_group, head.list);
# Line 1950  static bool ccs_read_policy(struct ccs_i Line 1953  static bool ccs_read_policy(struct ccs_i
1953                  if (acl->is_deleted)                  if (acl->is_deleted)
1954                          continue;                          continue;
1955                  switch (idx) {                  switch (idx) {
1956                  case CCS_ID_DOMAIN_KEEPER:                  case CCS_ID_TRANSITION_CONTROL:
                         {  
                                 struct ccs_domain_keeper *ptr =  
                                         container_of(acl, typeof(*ptr), head);  
                                 w[0] = ptr->is_not ?  
                                         CCS_KEYWORD_NO_KEEP_DOMAIN :  
                                         CCS_KEYWORD_KEEP_DOMAIN;  
                                 if (ptr->program) {  
                                         w[1] = ptr->program->name;  
                                         w[2] = " from ";  
                                 }  
                                 w[3] = ptr->domainname->name;  
                         }  
                         break;  
                 case CCS_ID_DOMAIN_INITIALIZER:  
1957                          {                          {
1958                                  struct ccs_domain_initializer *ptr =                                  struct ccs_transition_control *ptr =
1959                                          container_of(acl, typeof(*ptr), head);                                          container_of(acl, typeof(*ptr), head);
1960                                  w[0] = ptr->is_not ?                                  w[0] = ccs_transition_type[ptr->type];
1961                                          CCS_KEYWORD_NO_INITIALIZE_DOMAIN :                                  w[1] = ptr->program ? ptr->program->name
1962                                          CCS_KEYWORD_INITIALIZE_DOMAIN;                                          : "any";
1963                                  w[1] = ptr->program->name;                                  w[2] = " from ";
1964                                  if (ptr->domainname) {                                  w[3] = ptr->domainname ? ptr->domainname->name
1965                                          w[2] = " from ";                                          : "any";
                                         w[3] = ptr->domainname->name;  
                                 }  
1966                          }                          }
1967                          break;                          break;
1968                  case CCS_ID_AGGREGATOR:                  case CCS_ID_AGGREGATOR:

Legend:
Removed from v.3748  
changed lines
  Added in v.3752

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