components/openscap/patches/port1.0.0.patch
changeset 1698 72e1a26a96a1
equal deleted inserted replaced
1697:418a0b84f905 1698:72e1a26a96a1
       
     1 This patch provides ports for oscap-info.c, sce_engince.c,
       
     2 xccdf_policy.c, tailoring.c for solaris.
       
     3 
       
     4 --- openscap-1.0.0/src/XCCDF_POLICY/xccdf_policy.c.~1~	2013-11-09 23:54:47.459067475 -0800
       
     5 +++ openscap-1.0.0/src/XCCDF_POLICY/xccdf_policy.c	2013-11-25 11:16:50.271326192 -0800
       
     6 @@ -519,7 +519,11 @@
       
     7              if (r_value != NULL) {
       
     8                  selector = xccdf_refine_value_get_selector(r_value);
       
     9                  /* This refine value changes the value content */
       
    10 +#if defined(__SVR4) && defined(__sun)
       
    11 +                if (((unsigned int)xccdf_refine_value_get_oper(r_value)) > 0) {
       
    12 +#else
       
    13                  if (xccdf_refine_value_get_oper(r_value) > 0) {
       
    14 +#endif
       
    15                      binding->operator = xccdf_refine_value_get_oper(r_value);
       
    16                  } else binding->operator = xccdf_value_get_oper(value);
       
    17  
       
    18 @@ -2158,9 +2162,17 @@
       
    19                  
       
    20              } else if (xccdf_item_get_type(item) == XCCDF_RULE) {
       
    21                  /* Perform all changes in rule */
       
    22 +#if defined(__SVR4) && defined(__sun)
       
    23 +                if (((unsigned int)xccdf_refine_rule_get_role(r_rule)) > 0)
       
    24 +#else
       
    25                  if (xccdf_refine_rule_get_role(r_rule) > 0)
       
    26 +#endif
       
    27                      xccdf_rule_set_role((struct xccdf_rule *) item, xccdf_refine_rule_get_role(r_rule));
       
    28 +#if defined(__SVR4) && defined(__sun)
       
    29 +                if (!(unsigned int)xccdf_refine_rule_get_severity(r_rule) > 0)
       
    30 +#else
       
    31                  if (!xccdf_refine_rule_get_severity(r_rule) > 0)
       
    32 +#endif
       
    33                      xccdf_rule_set_severity((struct xccdf_rule *) item, xccdf_refine_rule_get_severity(r_rule));
       
    34  
       
    35              } else {}/* TODO oscap_err ? */;
       
    36 @@ -2384,7 +2396,11 @@
       
    37              if (r_rule == NULL) return item;
       
    38  
       
    39              new_item = (struct xccdf_item *) xccdf_rule_clone((struct xccdf_rule *) item);
       
    40 +#if defined(__SVR4) && defined(__sun)
       
    41 +            if (((unsigned int)xccdf_refine_rule_get_role(r_rule)) > 0)
       
    42 +#else
       
    43              if (xccdf_refine_rule_get_role(r_rule) > 0)
       
    44 +#endif
       
    45                  xccdf_rule_set_role((struct xccdf_rule *) new_item, xccdf_refine_rule_get_role(r_rule));
       
    46              if (xccdf_refine_rule_get_severity(r_rule) > 0)
       
    47                  xccdf_rule_set_severity((struct xccdf_rule *) new_item, xccdf_refine_rule_get_severity(r_rule));
       
    48 --- openscap-1.0.0/src/OVAL/probes/probe/signal_handler.c.~1~	2013-11-09 23:53:15.634238625 -0800
       
    49 +++ openscap-1.0.0/src/OVAL/probes/probe/signal_handler.c	2013-11-25 11:36:03.599412046 -0800
       
    50 @@ -125,9 +125,9 @@
       
    51  			 * cancelability), but at most 60 seconds per thread.
       
    52  			 */
       
    53  			for (; coll.cnt > 0; --coll.cnt) {
       
    54 +				probe_worker_t *thr = coll.thr[coll.cnt - 1];
       
    55  #if defined(HAVE_PTHREAD_TIMEDJOIN_NP) && defined(HAVE_CLOCK_GETTIME)
       
    56  				struct timespec j_tm;
       
    57 -				probe_worker_t *thr = coll.thr[coll.cnt - 1];
       
    58  
       
    59  				if (clock_gettime(CLOCK_REALTIME, &j_tm) == -1) {
       
    60  					dE("clock_gettime(CLOCK_REALTIME): %d, %s.\n", errno, strerror(errno));
       
    61 --- openscap-1.0.0/src/XCCDF/tailoring.c.~1~	2013-11-25 11:57:25.181799219 -0800
       
    62 +++ openscap-1.0.0/src/XCCDF/tailoring.c	2013-11-25 11:55:59.919560234 -0800
       
    63 @@ -197,7 +197,11 @@
       
    64  	xmlNode *tailoring_node = xmlNewNode(ns_xccdf, BAD_CAST "Tailoring");
       
    65  
       
    66  	const char *xccdf_version = xccdf_version_info_get_version(version_info);
       
    67 +#ifdef __USE_GNU
       
    68  	if (strverscmp(xccdf_version, "1.1") >= 0 && strverscmp(xccdf_version, "1.2") < 0) {
       
    69 +#else
       
    70 +	if (strcmp(xccdf_version, "1.1") >= 0 && strcmp(xccdf_version, "1.2") < 0) {
       
    71 +#endif
       
    72  		// XCCDF 1.1 does not support Tailoring!
       
    73  		// However we will allow Tailoring export if it is done to an external
       
    74  		// file. The namespace will be our custom xccdf-1.1-tailoring extension
       
    75 @@ -214,7 +218,11 @@
       
    76  			BAD_CAST "cdf-11-tailoring"
       
    77  		);
       
    78  	}
       
    79 +#ifdef __USE_GNU
       
    80  	else if (strverscmp(xccdf_version, "1.1") < 0) {
       
    81 +#else
       
    82 +	else if (strcmp(xccdf_version, "1.1") < 0) {
       
    83 +#endif
       
    84  		oscap_seterr(OSCAP_EFAMILY_XML, "XCCDF Tailoring isn't supported in XCCDF version '%s',"
       
    85  			"nor does openscap have a custom extension for this scenario. "
       
    86  			"XCCDF Tailoring requires XCCDF 1.1 and higher, 1.2 is recommended.");
       
    87 --- openscap-1.0.0/src/SCE/sce_engine.c.~1~	2013-11-09 23:54:47.457067482 -0800
       
    88 +++ openscap-1.0.0/src/SCE/sce_engine.c	2013-11-25 13:27:10.564328563 -0800
       
    89 @@ -52,7 +52,11 @@
       
    90  {
       
    91  	char* href;
       
    92  	char* basename;
       
    93 +#if defined(__SVR4) && defined(__sun)
       
    94 +	char* std_out;
       
    95 +#else
       
    96  	char* stdout;
       
    97 +#endif
       
    98  	int exit_code;
       
    99  	struct oscap_stringlist* environment_variables;
       
   100  	xccdf_test_result_type_t xccdf_result;
       
   101 @@ -63,7 +67,11 @@
       
   102  	struct sce_check_result* ret = oscap_alloc(sizeof(struct sce_check_result));
       
   103  	ret->href = NULL;
       
   104  	ret->basename = NULL;
       
   105 +#if defined(__SVR4) && defined(__sun)
       
   106 +	ret->std_out = NULL;
       
   107 +#else
       
   108  	ret->stdout = NULL;
       
   109 +#endif
       
   110  	ret->environment_variables = oscap_stringlist_new();
       
   111  	ret->xccdf_result = XCCDF_RESULT_UNKNOWN;
       
   112  
       
   113 @@ -79,8 +87,13 @@
       
   114  		oscap_free(v->href);
       
   115  	if (v->basename)
       
   116  		oscap_free(v->basename);
       
   117 +#if defined(__SVR4) && defined(__sun)
       
   118 +	if (v->std_out)
       
   119 +		oscap_free(v->std_out);
       
   120 +#else
       
   121  	if (v->stdout)
       
   122  		oscap_free(v->stdout);
       
   123 +#endif
       
   124  
       
   125  	oscap_stringlist_free(v->environment_variables);
       
   126  
       
   127 @@ -115,15 +128,25 @@
       
   128  
       
   129  void sce_check_result_set_stdout(struct sce_check_result* v, const char* _stdout)
       
   130  {
       
   131 +#if defined(__SVR4) && defined(__sun)
       
   132 +	if (v->std_out)
       
   133 +               oscap_free(v->std_out);
       
   134 +	v->std_out = strdup(_stdout);
       
   135 +#else
       
   136  	if (v->stdout)
       
   137  		oscap_free(v->stdout);
       
   138  
       
   139  	v->stdout = strdup(_stdout);
       
   140 +#endif
       
   141  }
       
   142  
       
   143  const char* sce_check_result_get_stdout(struct sce_check_result* v)
       
   144  {
       
   145 +#if defined(__SVR4) && defined(__sun)
       
   146 +	return v->std_out;
       
   147 +#else
       
   148  	return v->stdout;
       
   149 +#endif
       
   150  }
       
   151  
       
   152  void sce_check_result_set_exit_code(struct sce_check_result* v, int exit_code)
       
   153 @@ -178,7 +201,11 @@
       
   154  	oscap_string_iterator_free(it);
       
   155  	fprintf(f, "\t</sceres:environment>\n");
       
   156  	fprintf(f, "\t<sceres:stdout><![CDATA[\n");
       
   157 +#if defined(__SVR4) && defined(__sun)
       
   158 +	fwrite(v->std_out, 1, strlen(v->std_out), f);
       
   159 +#else
       
   160  	fwrite(v->stdout, 1, strlen(v->stdout), f);
       
   161 +#endif
       
   162  	fprintf(f, "\t]]></sceres:stdout>\n");
       
   163  	fprintf(f, "\t<sceres:exit_code>%i</sceres:exit_code>\n", sce_check_result_get_exit_code(v));
       
   164  	fprintf(f, "\t<sceres:result>%s</sceres:result>\n", xccdf_test_result_type_get_text(sce_check_result_get_xccdf_result(v)));
       
   165 --- openscap-1.0.0/utils/oscap-info.c.~1~	2012-12-14 02:13:18.113881933 -0800
       
   166 +++ openscap-1.0.0/utils/oscap-info.c	2013-01-16 09:55:13.348770490 -0800
       
   167 @@ -34,7 +34,11 @@
       
   168  #include <time.h>
       
   169  #include <sys/types.h>
       
   170  #include <sys/stat.h>
       
   171 +#if defined(__SVR4) && defined (__sun)
       
   172 +#include <limits.h>
       
   173 +#else
       
   174  #include <linux/limits.h>
       
   175 +#endif
       
   176  
       
   177  #include <oscap.h>
       
   178  #include <oval_results.h>