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

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 2871 by kumaneko, Sat Aug 8 08:03:30 2009 UTC revision 2890 by kumaneko, Tue Aug 11 00:44:58 2009 UTC
# Line 636  static int ccs_write_domain_policy(struc Line 636  static int ccs_write_domain_policy(struc
636          return error;          return error;
637  }  }
638    
639  static bool ccs_print_name_union(struct ccs_io_buffer *head, bool is_group,  static bool ccs_print_name_union(struct ccs_io_buffer *head,
640                                   union ccs_name_union *group)                                   struct ccs_name_union *ptr)
641  {  {
642          const int pos = head->read_avail;          const int pos = head->read_avail;
643          if (pos && head->read_buf[pos - 1] == ' ')          if (pos && head->read_buf[pos - 1] == ' ')
644                  head->read_avail--;                  head->read_avail--;
645          if (is_group)          if (ptr->is_group)
646                  return ccs_io_printf(head, " @%s",                  return ccs_io_printf(head, " @%s",
647                                       group->group->group_name->name);                                       ptr->group->group_name->name);
648          return ccs_io_printf(head, " %s", group->filename->name);          return ccs_io_printf(head, " %s", ptr->filename->name);
649  }  }
650    
651  static bool ccs_print_number_union(struct ccs_io_buffer *head, bool is_group,  static bool ccs_print_number_union(struct ccs_io_buffer *head,
652                                     union ccs_number_union *group)                                     struct ccs_number_union *ptr)
653  {  {
654          unsigned int min;          unsigned long min;
655          unsigned int max;          unsigned long max;
656          if (is_group)          u8 min_type;
657            u8 max_type;
658            if (ptr->is_group)
659                  return ccs_io_printf(head, " @%s",                  return ccs_io_printf(head, " @%s",
660                                       group->group->group_name->name);                                       ptr->group->group_name->name);
661          min = group->value.min;          min_type = ptr->min_type;
662          max = group->value.max;          max_type = ptr->max_type;
663          if (min == max)          min = ptr->values[0];
664                  return ccs_io_printf(head, " %u", min);          max = ptr->values[1];
665          return ccs_io_printf(head, " %u-%u", min, max);          switch (min_type) {
666            case VALUE_TYPE_HEXADECIMAL:
667                    if (!ccs_io_printf(head, " 0x%lX", min))
668                            return false;
669                    break;
670            case VALUE_TYPE_OCTAL:
671                    if (!ccs_io_printf(head, " 0%lo", min))
672                            return false;
673                    break;
674            default:
675                    if (!ccs_io_printf(head, " %lu", min))
676                            return false;
677                    break;
678            }
679            if (min == max && min_type == max_type)
680                    return true;
681            switch (max_type) {
682            case VALUE_TYPE_HEXADECIMAL:
683                    return ccs_io_printf(head, "-0x%lX", max);
684            case VALUE_TYPE_OCTAL:
685                    return ccs_io_printf(head, "-0%lo", max);
686            default:
687                    return ccs_io_printf(head, "-%lu", max);
688            }
689  }  }
690    
691  /**  /**
# Line 692  static bool ccs_print_single_path_acl(st Line 717  static bool ccs_print_single_path_acl(st
717                  msg = ccs_sp2keyword(bit);                  msg = ccs_sp2keyword(bit);
718                  pos = head->read_avail;                  pos = head->read_avail;
719                  if (!ccs_io_printf(head, "allow_%s", msg) ||                  if (!ccs_io_printf(head, "allow_%s", msg) ||
720                      !ccs_print_name_union(head, ptr->name_is_group,                      !ccs_print_name_union(head, &ptr->name) ||
                                           &ptr->name) ||  
721                      !ccs_print_condition(head, cond))                      !ccs_print_condition(head, cond))
722                          goto out;                          goto out;
723          }          }
# Line 728  static bool ccs_print_mkdev_acl(struct c Line 752  static bool ccs_print_mkdev_acl(struct c
752                  msg = ccs_mkdev2keyword(bit);                  msg = ccs_mkdev2keyword(bit);
753                  pos = head->read_avail;                  pos = head->read_avail;
754                  if (!ccs_io_printf(head, "allow_%s", msg) ||                  if (!ccs_io_printf(head, "allow_%s", msg) ||
755                      !ccs_print_name_union(head, ptr->name_is_group,                      !ccs_print_name_union(head, &ptr->name) ||
756                                            &ptr->name) ||                      !ccs_print_number_union(head, &ptr->major) ||
757                      !ccs_print_number_union(head, ptr->major_is_group,                      !ccs_print_number_union(head, &ptr->minor) ||
                                             &ptr->major) ||  
                     !ccs_print_number_union(head, ptr->minor_is_group,  
                                             &ptr->minor) ||  
758                      !ccs_print_condition(head, cond))                      !ccs_print_condition(head, cond))
759                          goto out;                          goto out;
760          }          }
# Line 768  static bool ccs_print_double_path_acl(st Line 789  static bool ccs_print_double_path_acl(st
789                  msg = ccs_dp2keyword(bit);                  msg = ccs_dp2keyword(bit);
790                  pos = head->read_avail;                  pos = head->read_avail;
791                  if (!ccs_io_printf(head, "allow_%s", msg) ||                  if (!ccs_io_printf(head, "allow_%s", msg) ||
792                      !ccs_print_name_union(head, ptr->name1_is_group,                      !ccs_print_name_union(head, &ptr->name1) ||
793                                            &ptr->name1) ||                      !ccs_print_name_union(head, &ptr->name2) ||
                     !ccs_print_name_union(head, ptr->name2_is_group,  
                                           &ptr->name2) ||  
794                      !ccs_print_condition(head, cond))                      !ccs_print_condition(head, cond))
795                          goto out;                          goto out;
796          }          }
# Line 806  static bool ccs_print_path_number_acl(st Line 825  static bool ccs_print_path_number_acl(st
825                  msg = ccs_path_number2keyword(bit);                  msg = ccs_path_number2keyword(bit);
826                  pos = head->read_avail;                  pos = head->read_avail;
827                  if (!ccs_io_printf(head, "allow_%s", msg) ||                  if (!ccs_io_printf(head, "allow_%s", msg) ||
828                      !ccs_print_name_union(head, ptr->name_is_group,                      !ccs_print_name_union(head, &ptr->name) ||
829                                            &ptr->name) ||                      !ccs_print_number_union(head, &ptr->number) ||
                     !ccs_print_number_union(head, ptr->number_is_group,  
                                             &ptr->number) ||  
830                      !ccs_print_condition(head, cond))                      !ccs_print_condition(head, cond))
831                          goto out;                          goto out;
832          }          }
# Line 973  static bool ccs_print_network_acl(struct Line 990  static bool ccs_print_network_acl(struct
990                          goto out;                          goto out;
991                  break;                  break;
992          }          }
993          if (!ccs_print_number_union(head, ptr->port_is_group, &ptr->port) ||          if (!ccs_print_number_union(head, &ptr->port) ||
994              !ccs_print_condition(head, cond))              !ccs_print_condition(head, cond))
995                  goto out;                  goto out;
996          return true;          return true;

Legend:
Removed from v.2871  
changed lines
  Added in v.2890

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