From be40ff2278b7bed82e51f57aaf01914f4b48ec29 Mon Sep 17 00:00:00 2001 From: Matthew Burket Date: Thu, 18 Dec 2025 12:34:37 -0600 Subject: [PATCH] Fix null ptr deref in xccdf_benchmark_parse Fixes #2289 --- src/XCCDF/benchmark.c | 2 +- tests/API/XCCDF/unittests/CMakeLists.txt | 1 + .../XCCDF/unittests/openscap_2289_regression.sh | 6 ++++++ .../unittests/openscap_2289_regression.xml | 17 +++++++++++++++++ 4 files changed, 25 insertions(+), 1 deletion(-) create mode 100755 tests/API/XCCDF/unittests/openscap_2289_regression.sh create mode 100644 tests/API/XCCDF/unittests/openscap_2289_regression.xml diff --git a/src/XCCDF/benchmark.c b/src/XCCDF/benchmark.c index d6560b7c9a..9775e4a48a 100644 --- a/src/XCCDF/benchmark.c +++ b/src/XCCDF/benchmark.c @@ -166,7 +166,7 @@ bool xccdf_benchmark_parse(struct xccdf_item * benchmark, xmlTextReaderPtr reade parsed_model = xccdf_model_new_xml(reader); // we won't add the implied default scoring model, it is already in the benchmark - if (strcmp(xccdf_model_get_system(parsed_model), "urn:xccdf:scoring:default") != 0) + if (oscap_strcmp(xccdf_model_get_system(parsed_model), "urn:xccdf:scoring:default") != 0) xccdf_benchmark_add_model(XBENCHMARK(benchmark), parsed_model); else xccdf_model_free(parsed_model); diff --git a/tests/API/XCCDF/unittests/CMakeLists.txt b/tests/API/XCCDF/unittests/CMakeLists.txt index ef835e3506..0cca6a75b7 100644 --- a/tests/API/XCCDF/unittests/CMakeLists.txt +++ b/tests/API/XCCDF/unittests/CMakeLists.txt @@ -112,3 +112,4 @@ add_oscap_test("test_no_newline_between_select_elements.sh") add_oscap_test("test_single_line_tailoring.sh") add_oscap_test("test_reference.sh") add_oscap_test("test_remediation_bootc.sh") +add_oscap_test("openscap_2289_regression.sh") diff --git a/tests/API/XCCDF/unittests/openscap_2289_regression.sh b/tests/API/XCCDF/unittests/openscap_2289_regression.sh new file mode 100755 index 0000000000..f5886bf925 --- /dev/null +++ b/tests/API/XCCDF/unittests/openscap_2289_regression.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env bash +set -e -o pipefail + +. $builddir/tests/test_common.sh + +$OSCAP info "$top_srcdir/tests/API/XCCDF/unittests/openscap_2289_regression.xml" diff --git a/tests/API/XCCDF/unittests/openscap_2289_regression.xml b/tests/API/XCCDF/unittests/openscap_2289_regression.xml new file mode 100644 index 0000000000..701c6ae339 --- /dev/null +++ b/tests/API/XCCDF/unittests/openscap_2289_regression.xml @@ -0,0 +1,17 @@ + + + draft + Ss + Oprt + 0.1 + + + +