Blame SOURCES/openscap-1.3.7-PR-1841-coverity.patch

4ef38b
From f141dfd0311ec2be4c4c27814d9d6693551cfd76 Mon Sep 17 00:00:00 2001
4ef38b
From: =?UTF-8?q?Jan=20=C4=8Cern=C3=BD?= <jcerny@redhat.com>
4ef38b
Date: Thu, 27 Jan 2022 15:00:33 +0100
4ef38b
Subject: [PATCH 1/3] Fix shellcheck warning
4ef38b
4ef38b
Addressing:
4ef38b
4ef38b
Error: SHELLCHECK_WARNING (CWE-138): [#def1]
4ef38b
/usr/libexec/oscap-remediate:110:12: error[SC2145]: Argument mixes string and array. Use * or separate argument.
4ef38b
  108|   args+=( "--remediate" )
4ef38b
  109|   args+=( "${OSCAP_REMEDIATE_DS}" )
4ef38b
  110|-> log "Args: ${args[@]}"
4ef38b
  111|
4ef38b
  112|   # Now we are good to go
4ef38b
---
4ef38b
 utils/oscap-remediate | 2 +-
4ef38b
 1 file changed, 1 insertion(+), 1 deletion(-)
4ef38b
4ef38b
diff --git a/utils/oscap-remediate b/utils/oscap-remediate
4ef38b
index fc0b7715f..52e29aa66 100755
4ef38b
--- a/utils/oscap-remediate
4ef38b
+++ b/utils/oscap-remediate
4ef38b
@@ -107,7 +107,7 @@ args+=( ${OSCAP_REMEDIATE_HTML_REPORT:+"--report=${OSCAP_REMEDIATE_HTML_REPORT}"
4ef38b
 args+=( "--progress-full" )
4ef38b
 args+=( "--remediate" )
4ef38b
 args+=( "${OSCAP_REMEDIATE_DS}" )
4ef38b
-log "Args: ${args[@]}"
4ef38b
+log "Args: ${args[*]}"
4ef38b
 
4ef38b
 # Now we are good to go
4ef38b
 header="OpenSCAP is checking the system for compliance using"$'\n'"${profile_title}"$'\n\n'"Evaluating..."
4ef38b
4ef38b
From d3e7d5be1fcd55ef396de6070f877df0f2c2c58e Mon Sep 17 00:00:00 2001
4ef38b
From: =?UTF-8?q?Jan=20=C4=8Cern=C3=BD?= <jcerny@redhat.com>
4ef38b
Date: Thu, 27 Jan 2022 15:09:02 +0100
4ef38b
Subject: [PATCH 2/3] Remove superfluous strdup
4ef38b
4ef38b
We can do this because xccdf_session_set_rule calls strdup on the rule
4ef38b
parameter internally.
4ef38b
4ef38b
Addressing:
4ef38b
4ef38b
Error: RESOURCE_LEAK (CWE-772): [#def2] [important]
4ef38b
openscap-1.3.6/build/swig/python3/CMakeFiles/_openscap_py.dir/openscapPYTHON_wrap.c:4148: alloc_fn: Storage is returned from allocation function "strdup".
4ef38b
openscap-1.3.6/build/swig/python3/CMakeFiles/_openscap_py.dir/openscapPYTHON_wrap.c:4148: var_assign: Assigning: "n_rule" = storage returned from "strdup(rule)".
4ef38b
openscap-1.3.6/build/swig/python3/CMakeFiles/_openscap_py.dir/openscapPYTHON_wrap.c:4149: noescape: Resource "n_rule" is not freed or pointed-to in "xccdf_session_set_rule".
4ef38b
openscap-1.3.6/build/swig/python3/CMakeFiles/_openscap_py.dir/openscapPYTHON_wrap.c:4150: leaked_storage: Variable "n_rule" going out of scope leaks the storage it points to.
4ef38b
 4148|       char *n_rule = strdup(rule);
4ef38b
 4149|       xccdf_session_set_rule(sess, n_rule);
4ef38b
 4150|-> }
4ef38b
 4151|
4ef38b
 4152|   void xccdf_session_free_py(struct xccdf_session *sess){
4ef38b
---
4ef38b
 swig/openscap.i | 3 +--
4ef38b
 1 file changed, 1 insertion(+), 2 deletions(-)
4ef38b
4ef38b
diff --git a/swig/openscap.i b/swig/openscap.i
4ef38b
index 2fe1cce99..158a22675 100644
4ef38b
--- a/swig/openscap.i
4ef38b
+++ b/swig/openscap.i
4ef38b
@@ -559,8 +559,7 @@ struct xccdf_session {
4ef38b
 };
4ef38b
 
4ef38b
 void xccdf_session_set_rule_py(struct xccdf_session  *sess, char *rule) {
4ef38b
-    char *n_rule = strdup(rule);
4ef38b
-    xccdf_session_set_rule(sess, n_rule);
4ef38b
+    xccdf_session_set_rule(sess, rule);
4ef38b
 }
4ef38b
 
4ef38b
 void xccdf_session_free_py(struct xccdf_session *sess){
4ef38b
4ef38b
From 6ef54336a018566a32f6a95177635ada7f20794e Mon Sep 17 00:00:00 2001
4ef38b
From: =?UTF-8?q?Jan=20=C4=8Cern=C3=BD?= <jcerny@redhat.com>
4ef38b
Date: Thu, 27 Jan 2022 15:16:02 +0100
4ef38b
Subject: [PATCH 3/3] Add a missing free
4ef38b
4ef38b
Addressing:
4ef38b
Error: RESOURCE_LEAK (CWE-772): [#def4] [important]
4ef38b
openscap-1.3.6/src/XCCDF_POLICY/xccdf_policy.c:2144: alloc_fn: Storage is returned from allocation function "oscap_htable_iterator_new".
4ef38b
openscap-1.3.6/src/XCCDF_POLICY/xccdf_policy.c:2144: var_assign: Assigning: "rit" = storage returned from "oscap_htable_iterator_new(policy->rules)".
4ef38b
openscap-1.3.6/src/XCCDF_POLICY/xccdf_policy.c:2145: noescape: Resource "rit" is not freed or pointed-to in "oscap_htable_iterator_has_more".
4ef38b
openscap-1.3.6/src/XCCDF_POLICY/xccdf_policy.c:2146: noescape: Resource "rit" is not freed or pointed-to in "oscap_htable_iterator_next_key".
4ef38b
openscap-1.3.6/src/XCCDF_POLICY/xccdf_policy.c:2150: leaked_storage: Variable "rit" going out of scope leaks the storage it points to.
4ef38b
 2148|   			oscap_seterr(OSCAP_EFAMILY_XCCDF,
4ef38b
 2149|   				"Rule '%s' not found in selected profile.", rule_id);
4ef38b
 2150|-> 			return NULL;
4ef38b
 2151|   		}
4ef38b
 2152|   	}
4ef38b
---
4ef38b
 src/XCCDF_POLICY/xccdf_policy.c | 1 +
4ef38b
 1 file changed, 1 insertion(+)
4ef38b
4ef38b
diff --git a/src/XCCDF_POLICY/xccdf_policy.c b/src/XCCDF_POLICY/xccdf_policy.c
4ef38b
index b63853a38..4d4b7ad0a 100644
4ef38b
--- a/src/XCCDF_POLICY/xccdf_policy.c
4ef38b
+++ b/src/XCCDF_POLICY/xccdf_policy.c
4ef38b
@@ -2147,6 +2147,7 @@ struct xccdf_result * xccdf_policy_evaluate(struct xccdf_policy * policy)
4ef38b
 		if (oscap_htable_get(policy->rules_found, rule_id) == NULL) {
4ef38b
 			oscap_seterr(OSCAP_EFAMILY_XCCDF,
4ef38b
 				"Rule '%s' not found in selected profile.", rule_id);
4ef38b
+			oscap_htable_iterator_free(rit);
4ef38b
 			return NULL;
4ef38b
 		}
4ef38b
 	}