components/openscap/patches/oval_variable_fix.patch
author Jacob Varughese <jacob.varughese@oracle.com>
Tue, 17 Mar 2015 17:29:09 -0700
changeset 3965 15ec96132ff2
permissions -rw-r--r--
20694911 openscap fails when OVAL variable is used outside its defined set of values
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3965
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
     1
This patch fixes the issue when variables are used in XCCDF
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
     2
and the selector value is outside the specified list of values
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
     3
for the variable, prevents oscap from dumping core.
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
     4
This patch does not need to be contributed upstream, as it is 
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
     5
from the upstream community.
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
     6
This patch is based on https://github.com/OpenSCAP/openscap/commit/dd94c23cfafbd1ad0d316ccf4fa9489af4c68c74
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
     7
This patch will not be needed once we upgrade to 1.2.2 or higher.
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
     8
--- openscap-1.2.1/src/XCCDF_POLICY/xccdf_policy.c.~1~	2015-03-13 10:26:12.158240726 -0700
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
     9
+++ openscap-1.2.1/src/XCCDF_POLICY/xccdf_policy.c	2015-03-13 10:28:36.287476734 -0700
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    10
@@ -2166,7 +2166,13 @@
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    11
 	}
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    12
 
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    13
 	struct xccdf_value_instance *instance = xccdf_value_get_instance_by_selector((struct xccdf_value *) item, selector);
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    14
-	return xccdf_value_instance_get_value(instance);
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    15
+	if (instance == NULL) {
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    16
+	    oscap_seterr(OSCAP_EFAMILY_XCCDF, "Invalid selector '%s' for xccdf:value/@id='%s'. Using null value instead.",
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    17
+	                    selector, xccdf_value_get_id((struct xccdf_value *) item));
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    18
+		return NULL;
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    19
+	} else {
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    20
+		return xccdf_value_instance_get_value(instance);
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    21
+	}
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    22
 }
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    23
 
15ec96132ff2 20694911 openscap fails when OVAL variable is used outside its defined set of values
Jacob Varughese <jacob.varughese@oracle.com>
parents:
diff changeset
    24
 static int xccdf_policy_get_refine_value_oper(struct xccdf_policy * policy, struct xccdf_item * item)