components/openscap/patches/port097.patch
changeset 1698 72e1a26a96a1
parent 1697 418a0b84f905
child 1699 152cafe6cd99
equal deleted inserted replaced
1697:418a0b84f905 1698:72e1a26a96a1
     1 This patch provides ports for oscap-info.c, sce_engince.c,
       
     2 xccdf_policy.c for solaris.
       
     3 This patch has not been contributed upstream, but is planned to be done by
       
     4  2013-Jul-12.
       
     5 
       
     6 --- openscap-0.9.7/utils/oscap-info.c.~1~	2012-12-14 02:13:18.113881933 -0800
       
     7 +++ openscap-0.9.7/utils/oscap-info.c	2013-01-16 09:55:13.348770490 -0800
       
     8 @@ -34,7 +34,11 @@
       
     9  #include <time.h>
       
    10  #include <sys/types.h>
       
    11  #include <sys/stat.h>
       
    12 +#if defined(__SVR4) && defined (__sun)
       
    13 +#include <limits.h>
       
    14 +#else
       
    15  #include <linux/limits.h>
       
    16 +#endif
       
    17  
       
    18  #include <oscap.h>
       
    19  #include <oval_results.h>
       
    20 --- openscap-0.9.7/src/SCE/sce_engine.c.~1~	2013-02-25 06:14:51.840092360 -0800
       
    21 +++ openscap-0.9.7/src/SCE/sce_engine.c	2013-04-03 15:31:16.479290382 -0700
       
    22 @@ -52,7 +52,11 @@
       
    23  {
       
    24  	char* href;
       
    25  	char* basename;
       
    26 +#if defined(__SVR4) && defined(__sun)
       
    27 +	char* std_out;
       
    28 +#else
       
    29  	char* stdout;
       
    30 +#endif
       
    31  	int exit_code;
       
    32  	struct oscap_stringlist* environment_variables;
       
    33  	xccdf_test_result_type_t xccdf_result;
       
    34 @@ -63,7 +67,11 @@
       
    35  	struct sce_check_result* ret = oscap_alloc(sizeof(struct sce_check_result));
       
    36  	ret->href = NULL;
       
    37  	ret->basename = NULL;
       
    38 +#if defined(__SVR4) && defined(__sun)
       
    39 +	ret->std_out = NULL;
       
    40 +#else
       
    41  	ret->stdout = NULL;
       
    42 +#endif
       
    43  	ret->environment_variables = oscap_stringlist_new();
       
    44  	ret->xccdf_result = XCCDF_RESULT_UNKNOWN;
       
    45  
       
    46 @@ -79,8 +87,13 @@
       
    47  		oscap_free(v->href);
       
    48  	if (v->basename)
       
    49  		oscap_free(v->basename);
       
    50 +#if defined(__SVR4) && defined(__sun)
       
    51 +	if (v->std_out)
       
    52 +		oscap_free(v->std_out);
       
    53 +#else
       
    54  	if (v->stdout)
       
    55  		oscap_free(v->stdout);
       
    56 +#endif
       
    57  
       
    58  	oscap_stringlist_free(v->environment_variables);
       
    59  
       
    60 @@ -115,15 +128,24 @@
       
    61  
       
    62  void sce_check_result_set_stdout(struct sce_check_result* v, const char* _stdout)
       
    63  {
       
    64 +#if defined(__SVR4) && defined(__sun)
       
    65 +	if (v->std_out)
       
    66 +		oscap_free(v->std_out);
       
    67 +	v->std_out = oscap_strdup(_stdout);
       
    68 +#else
       
    69  	if (v->stdout)
       
    70  		oscap_free(v->stdout);
       
    71 -
       
    72  	v->stdout = oscap_strdup(_stdout);
       
    73 +#endif
       
    74  }
       
    75  
       
    76  const char* sce_check_result_get_stdout(struct sce_check_result* v)
       
    77  {
       
    78 +#if defined(__SVR4) && defined(__sun)
       
    79 +	return v->std_out;
       
    80 +#else
       
    81  	return v->stdout;
       
    82 +#endif
       
    83  }
       
    84  
       
    85  void sce_check_result_set_exit_code(struct sce_check_result* v, int exit_code)
       
    86 @@ -178,7 +200,11 @@
       
    87  	oscap_string_iterator_free(it);
       
    88  	fprintf(f, "\t</sceres:environment>\n");
       
    89  	fprintf(f, "\t<sceres:stdout><![CDATA[\n");
       
    90 +#if defined(__SVR4) && defined(__sun)
       
    91 +	fwrite(v->std_out, 1, strlen(v->std_out), f);
       
    92 +#else
       
    93  	fwrite(v->stdout, 1, strlen(v->stdout), f);
       
    94 +#endif
       
    95  	fprintf(f, "\t]]></sceres:stdout>\n");
       
    96  	fprintf(f, "\t<sceres:exit_code>%i</sceres:exit_code>\n", sce_check_result_get_exit_code(v));
       
    97  	fprintf(f, "\t<sceres:result>%s</sceres:result>\n", xccdf_test_result_type_get_text(sce_check_result_get_xccdf_result(v)));
       
    98 --- openscap-0.9.7/src/XCCDF_POLICY/xccdf_policy.c.~1~	2013-03-19 07:58:22.307735235 -0700
       
    99 +++ openscap-0.9.7/src/XCCDF_POLICY/xccdf_policy.c	2013-04-03 15:35:39.100347346 -0700
       
   100 @@ -521,7 +521,11 @@
       
   101              if (r_value != NULL) {
       
   102                  selector = xccdf_refine_value_get_selector(r_value);
       
   103                  /* This refine value changes the value content */
       
   104 +#if defined(__SVR4) && defined(__sun)
       
   105 +                if (!isnan((double)xccdf_refine_value_get_oper(r_value))) {
       
   106 +#else
       
   107                  if (!isnan(xccdf_refine_value_get_oper(r_value))) {
       
   108 +#endif
       
   109                      binding->operator = xccdf_refine_value_get_oper(r_value);
       
   110                  } else binding->operator = xccdf_value_get_oper(value);
       
   111  
       
   112 @@ -2142,9 +2146,17 @@
       
   113                  
       
   114              } else if (xccdf_item_get_type(item) == XCCDF_RULE) {
       
   115                  /* Perform all changes in rule */
       
   116 +#if defined(__SVR4) && defined(__sun)
       
   117 +                if (!isnan((double)xccdf_refine_rule_get_role(r_rule)))
       
   118 +#else
       
   119                  if (!isnan(xccdf_refine_rule_get_role(r_rule)))
       
   120 +#endif
       
   121                      xccdf_rule_set_role((struct xccdf_rule *) item, xccdf_refine_rule_get_role(r_rule));
       
   122 +#if defined(__SVR4) && defined(__sun)
       
   123 +                if (!isnan((double)xccdf_refine_rule_get_severity(r_rule)))
       
   124 +#else
       
   125                  if (!isnan(xccdf_refine_rule_get_severity(r_rule)))
       
   126 +#endif
       
   127                      xccdf_rule_set_severity((struct xccdf_rule *) item, xccdf_refine_rule_get_severity(r_rule));
       
   128  
       
   129              } else {}/* TODO oscap_err ? */;
       
   130 @@ -2201,7 +2213,11 @@
       
   131      const struct xccdf_version_info* version_info = xccdf_benchmark_get_schema_version(benchmark);
       
   132      doc_version = xccdf_version_info_get_version(version_info);
       
   133  
       
   134 +#ifdef __USE_GNU
       
   135      if (strverscmp("1.2", doc_version) >= 0)
       
   136 +#else
       
   137 +    if (strcmp("1.2", doc_version) >= 0)
       
   138 +#endif
       
   139      {
       
   140          // we have to enforce a certain type of ids for XCCDF 1.2+
       
   141  
       
   142 @@ -2376,9 +2392,17 @@
       
   143              if (r_rule == NULL) return item;
       
   144  
       
   145              new_item = (struct xccdf_item *) xccdf_rule_clone((struct xccdf_rule *) item);
       
   146 +#if defined(__SVR4) && defined(__sun)
       
   147 +            if (!isnan((double)xccdf_refine_rule_get_role(r_rule)))
       
   148 +#else
       
   149              if (!isnan(xccdf_refine_rule_get_role(r_rule)))
       
   150 +#endif
       
   151                  xccdf_rule_set_role((struct xccdf_rule *) new_item, xccdf_refine_rule_get_role(r_rule));
       
   152 +#if defined(__SVR4) && defined(__sun)
       
   153 +            if (!isnan((double)xccdf_refine_rule_get_severity(r_rule)))
       
   154 +#else
       
   155              if (!isnan(xccdf_refine_rule_get_severity(r_rule)))
       
   156 +#endif
       
   157                  xccdf_rule_set_severity((struct xccdf_rule *) new_item, xccdf_refine_rule_get_severity(r_rule));
       
   158              if (xccdf_refine_rule_weight_defined(r_rule))
       
   159                  xccdf_rule_set_weight((struct xccdf_rule *) new_item, xccdf_refine_rule_get_weight(r_rule));