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

Subversion リポジトリの参照

Diff of /branches/ccs-patch/security/ccsecurity/policy_io.c

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

revision 3905 by kumaneko, Thu Aug 19 12:10:48 2010 UTC revision 3911 by kumaneko, Sun Aug 22 12:18:01 2010 UTC
# Line 92  static const char *ccs_mac_keywords[CCS_ Line 92  static const char *ccs_mac_keywords[CCS_
92          = "file::transit",          = "file::transit",
93          [CCS_MAC_ENVIRON]          [CCS_MAC_ENVIRON]
94          = "misc::env",          = "misc::env",
95          [CCS_MAC_NETWORK_TCP_BIND]          [CCS_MAC_NETWORK_INET_TCP_BIND]
96          = "network::inet_tcp_bind",          = "network::inet_tcp_bind",
97          [CCS_MAC_NETWORK_TCP_LISTEN]          [CCS_MAC_NETWORK_INET_TCP_LISTEN]
98          = "network::inet_tcp_listen",          = "network::inet_tcp_listen",
99          [CCS_MAC_NETWORK_TCP_CONNECT]          [CCS_MAC_NETWORK_INET_TCP_CONNECT]
100          = "network::inet_tcp_connect",          = "network::inet_tcp_connect",
101          [CCS_MAC_NETWORK_TCP_ACCEPT]          [CCS_MAC_NETWORK_INET_TCP_ACCEPT]
102          = "network::inet_tcp_accept",          = "network::inet_tcp_accept",
103          [CCS_MAC_NETWORK_UDP_BIND]          [CCS_MAC_NETWORK_INET_UDP_BIND]
104          = "network::inet_udp_bind",          = "network::inet_udp_bind",
105          [CCS_MAC_NETWORK_UDP_SEND]          [CCS_MAC_NETWORK_INET_UDP_CONNECT]
106            = "network::inet_udp_connect",
107            [CCS_MAC_NETWORK_INET_UDP_SEND]
108          = "network::inet_udp_send",          = "network::inet_udp_send",
109          [CCS_MAC_NETWORK_UDP_RECV]          [CCS_MAC_NETWORK_INET_UDP_RECV]
110          = "network::inet_udp_recv",          = "network::inet_udp_recv",
111          [CCS_MAC_NETWORK_RAW_BIND]          [CCS_MAC_NETWORK_INET_RAW_BIND]
112          = "network::inet_raw_bind",          = "network::inet_raw_bind",
113          [CCS_MAC_NETWORK_RAW_SEND]          [CCS_MAC_NETWORK_INET_RAW_CONNECT]
114            = "network::inet_raw_connect",
115            [CCS_MAC_NETWORK_INET_RAW_SEND]
116          = "network::inet_raw_send",          = "network::inet_raw_send",
117          [CCS_MAC_NETWORK_RAW_RECV]          [CCS_MAC_NETWORK_INET_RAW_RECV]
118          = "network::inet_raw_recv",          = "network::inet_raw_recv",
119            [CCS_MAC_NETWORK_UNIX_STREAM_BIND]
120            = "network::unix_stream_bind",
121            [CCS_MAC_NETWORK_UNIX_STREAM_LISTEN]
122            = "network::unix_stream_listen",
123            [CCS_MAC_NETWORK_UNIX_STREAM_CONNECT]
124            = "network::unix_stream_connect",
125            [CCS_MAC_NETWORK_UNIX_DGRAM_BIND]
126            = "network::unix_dgram_bind",
127            [CCS_MAC_NETWORK_UNIX_DGRAM_CONNECT]
128            = "network::unix_dgram_connect",
129            [CCS_MAC_NETWORK_UNIX_DGRAM_SEND]
130            = "network::unix_dgram_send",
131            [CCS_MAC_NETWORK_UNIX_SEQPACKET_BIND]
132            = "network::unix_seqpacket_bind",
133            [CCS_MAC_NETWORK_UNIX_SEQPACKET_LISTEN]
134            = "network::unix_seqpacket_listen",
135            [CCS_MAC_NETWORK_UNIX_SEQPACKET_CONNECT]
136            = "network::unix_seqpacket_connect",
137          [CCS_MAC_SIGNAL]          [CCS_MAC_SIGNAL]
138          = "ipc::signal",          = "ipc::signal",
139          [CCS_MAX_MAC_INDEX + CCS_USE_ROUTE_SOCKET]          [CCS_MAX_MAC_INDEX + CCS_USE_ROUTE_SOCKET]
# Line 854  static int ccs_write_domain2(char *data, Line 876  static int ccs_write_domain2(char *data,
876                  const char *keyword;                  const char *keyword;
877                  int (*write) (char *, struct ccs_domain_info *,                  int (*write) (char *, struct ccs_domain_info *,
878                                struct ccs_condition *, const bool);                                struct ccs_condition *, const bool);
879          } ccs_callback[4] = {          } ccs_callback[5] = {
880                  { "network ", ccs_write_network },                  { "network inet ", ccs_write_inet_network },
881                    { "network unix ", ccs_write_unix_network },
882                  { "misc ", ccs_write_misc },                  { "misc ", ccs_write_misc },
883                  { "capability ", ccs_write_capability },                  { "capability ", ccs_write_capability },
884                  { "ipc ", ccs_write_ipc },                  { "ipc ", ccs_write_ipc },
# Line 871  static int ccs_write_domain2(char *data, Line 894  static int ccs_write_domain2(char *data,
894                  if (!cond)                  if (!cond)
895                          return -EINVAL;                          return -EINVAL;
896          }          }
897          for (i = 0; i < 4; i++) {          for (i = 0; i < 5; i++) {
898                  if (!ccs_str_starts(&data, ccs_callback[i].keyword))                  if (!ccs_str_starts(&data, ccs_callback[i].keyword))
899                          continue;                          continue;
900                  write = ccs_callback[i].write;                  write = ccs_callback[i].write;
# Line 1284  static bool ccs_print_entry(struct ccs_i Line 1307  static bool ccs_print_entry(struct ccs_i
1307                  ccs_set_group(head);                  ccs_set_group(head);
1308                  ccs_set_string(head, "capability ");                  ccs_set_string(head, "capability ");
1309                  ccs_set_string(head, ccs_cap2keyword(ptr->operation));                  ccs_set_string(head, ccs_cap2keyword(ptr->operation));
1310          } else if (acl_type == CCS_TYPE_IP_NETWORK_ACL) {          } else if (acl_type == CCS_TYPE_INET_ACL) {
1311                  struct ccs_ip_network_acl *ptr =                  struct ccs_inet_acl *ptr =
1312                          container_of(acl, typeof(*ptr), head);                          container_of(acl, typeof(*ptr), head);
1313                  bit = ccs_fns(ptr->perm, bit);                  bit = ccs_fns(ptr->perm, bit);
1314                  if (bit >= CCS_MAX_NETWORK_OPERATION)                  if (bit >= CCS_MAX_NETWORK_OPERATION)
1315                          goto done;                          goto done;
1316                  ccs_set_group(head);                  ccs_set_group(head);
1317                  ccs_set_string(head, "network ");                  ccs_set_string(head, "network inet ");
1318                  ccs_set_string(head, ccs_net_protocol_keyword[ptr->protocol]);                  ccs_set_string(head, ccs_inet_keyword[ptr->protocol]);
1319                  ccs_set_space(head);                  ccs_set_space(head);
1320                  ccs_set_string(head, ccs_net_keyword[bit]);                  ccs_set_string(head, ccs_net_keyword[bit]);
1321                  ccs_set_space(head);                  ccs_set_space(head);
# Line 1315  static bool ccs_print_entry(struct ccs_i Line 1338  static bool ccs_print_entry(struct ccs_i
1338                          break;                          break;
1339                  }                  }
1340                  ccs_print_number_union(head, &ptr->port);                  ccs_print_number_union(head, &ptr->port);
1341            } else if (acl_type == CCS_TYPE_UNIX_ACL) {
1342                    struct ccs_unix_acl *ptr =
1343                            container_of(acl, typeof(*ptr), head);
1344                    bit = ccs_fns(ptr->perm, bit);
1345                    if (bit >= CCS_MAX_NETWORK_OPERATION)
1346                            goto done;
1347                    ccs_set_group(head);
1348                    ccs_set_string(head, "network unix ");
1349                    ccs_set_string(head, ccs_unix_keyword[ptr->protocol]);
1350                    ccs_set_space(head);
1351                    ccs_set_string(head, ccs_net_keyword[bit]);
1352                    ccs_print_name_union(head, &ptr->name);
1353          } else if (acl_type == CCS_TYPE_SIGNAL_ACL) {          } else if (acl_type == CCS_TYPE_SIGNAL_ACL) {
1354                  struct ccs_signal_acl *ptr =                  struct ccs_signal_acl *ptr =
1355                          container_of(acl, typeof(*ptr), head);                          container_of(acl, typeof(*ptr), head);
# Line 1350  static bool ccs_print_entry(struct ccs_i Line 1385  static bool ccs_print_entry(struct ccs_i
1385          case CCS_TYPE_MKDEV_ACL:          case CCS_TYPE_MKDEV_ACL:
1386          case CCS_TYPE_PATH2_ACL:          case CCS_TYPE_PATH2_ACL:
1387          case CCS_TYPE_PATH_NUMBER_ACL:          case CCS_TYPE_PATH_NUMBER_ACL:
1388          case CCS_TYPE_IP_NETWORK_ACL:          case CCS_TYPE_INET_ACL:
1389            case CCS_TYPE_UNIX_ACL:
1390                  goto next;                  goto next;
1391          }          }
1392   done:   done:

Legend:
Removed from v.3905  
changed lines
  Added in v.3911

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