Skip to content

Commit 657a4ff

Browse files
authored
Merge pull request #2313 from jan-cerny/list_rules_vars
List rules and variables in a profile by "oscap info"
2 parents 5a8c7f1 + 3170d46 commit 657a4ff

16 files changed

+937
-43
lines changed

dist/bash_completion.d/oscap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ function _oscap {
3939
opts[oscap:xccdf:generate:guide]="-o --output --hide-profile-info --profile --benchmark-id --xccdf-id --tailoring-file --tailoring-id --skip-signature-validation --enforce-signature"
4040
opts[oscap:xccdf:generate:fix]="-o --output --profile --result-id --profile --fix-type --xccdf-id --benchmark-id --tailoring-file --tailoring-id --skip-signature-validation --enforce-signature"
4141
opts[oscap:xccdf:generate:custom]="-o --output --stylesheet"
42-
opts[oscap:info]="--fetch-remote-resources --local-files --profile --profiles --references"
42+
opts[oscap:info]="--fetch-remote-resources --local-files --profile --profiles --references --list-rules --list-vars"
4343

4444
# local variables
4545
local cur prev words cword split

docs/manual/manual.adoc

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,39 @@ description, use the `--profile` option followed by the profile ID.
217217
$ oscap info --profile xccdf_org.ssgproject.content_profile_ospp /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
218218
----
219219

220+
=== Listing rules selected by a profile
221+
222+
To list the IDs of all XCCDF rules that are selected by a given profile, use
223+
the `--list-rules` option together with `--profile`. The output contains one
224+
rule ID per line and is machine-readable, which makes it suitable for scripting,
225+
CI/CD pipelines, and tailoring validation workflows.
226+
227+
----
228+
$ oscap info --profile ospp --list-rules /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
229+
xccdf_org.ssgproject.content_rule_partition_for_tmp
230+
xccdf_org.ssgproject.content_rule_partition_for_var
231+
...
232+
----
233+
234+
The `--list-rules` option requires `--profile`. Running `--list-rules` without
235+
`--profile` will produce an error.
236+
237+
=== Listing variables set by a profile
238+
239+
To list the XCCDF Values (variables) and their resolved values for a given
240+
profile, use the `--list-vars` option together with `--profile`. Each line
241+
contains a Value ID and its resolved value, separated by a tab character.
242+
243+
----
244+
$ oscap info --profile ospp --list-vars /usr/share/xml/scap/ssg/content/ssg-rhel8-ds.xml
245+
xccdf_org.ssgproject.content_value_var_password_minlen 15
246+
xccdf_org.ssgproject.content_value_var_accounts_max_concurrent_login_sessions 10
247+
...
248+
----
249+
250+
The `--list-vars` option requires `--profile`. Running `--list-vars` without
251+
`--profile` will produce an error.
252+
220253
=== Displaying information about SCAP result data streams
221254

222255
The `oscap info` command is also helpful with other SCAP file types such as

tests/API/XCCDF/unittests/test_reference_ds.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,19 @@
6767
<select idref="xccdf_com.example.www_rule_R2" selected="true"/>
6868
<select idref="xccdf_com.example.www_rule_R3" selected="true"/>
6969
<select idref="xccdf_com.example.www_rule_R4" selected="true"/>
70+
<set-value idref="xccdf_com.example.www_value_V1">42</set-value>
71+
<refine-value idref="xccdf_com.example.www_value_V2" selector="custom"/>
7072
</Profile>
73+
<Value id="xccdf_com.example.www_value_V1" type="number">
74+
<title>Value V1</title>
75+
<value>10</value>
76+
<value selector="twenty">20</value>
77+
</Value>
78+
<Value id="xccdf_com.example.www_value_V2" type="string">
79+
<title>Value V2</title>
80+
<value>default_val</value>
81+
<value selector="custom">custom_val</value>
82+
</Value>
7183
<Rule selected="true" id="xccdf_com.example.www_rule_R1">
7284
<title>Rule R1</title>
7385
<description>Description</description>

tests/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ add_subdirectory("CPE")
3131
add_subdirectory("DS")
3232
add_subdirectory("mitre")
3333
add_subdirectory("nist")
34+
add_subdirectory("oscap_info_profiles")
3435
add_subdirectory("oscap_string")
3536
add_subdirectory("oval_details")
3637
add_subdirectory("probe_behavior")
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
add_oscap_test("test_list_rules.sh")
2+
add_oscap_test("test_list_vars.sh")
Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
#!/usr/bin/env bash
2+
. $builddir/tests/test_common.sh
3+
4+
set -e
5+
set -o pipefail
6+
7+
stderr=$(mktemp -t ${name}.err.XXXXXX)
8+
stdout=$(mktemp -t ${name}.out.XXXXXX)
9+
10+
ds="$srcdir/test_reference_ds.xml"
11+
p1="xccdf_com.example.www_profile_P1"
12+
13+
# Test 1: --list-rules with --profile prints selected rule IDs
14+
$OSCAP info --profile $p1 --list-rules $ds > $stdout 2> $stderr
15+
[[ -f $stderr ]]; [[ ! -s $stderr ]]; :> $stderr
16+
grep -q "xccdf_com.example.www_rule_R1" $stdout
17+
grep -q "xccdf_com.example.www_rule_R2" $stdout
18+
grep -q "xccdf_com.example.www_rule_R3" $stdout
19+
grep -q "xccdf_com.example.www_rule_R4" $stdout
20+
# Verify output contains only rule IDs, one per line (4 rules = 4 lines)
21+
[[ "$(wc -l < $stdout)" -eq 4 ]]
22+
:> $stdout
23+
24+
# Test 2: --list-rules without --profile produces an error
25+
$OSCAP info --list-rules $ds > $stdout 2> $stderr && exit 1 || true
26+
grep -q "\-\-list-rules option requires \-\-profile" $stderr
27+
:> $stdout
28+
:> $stderr
29+
30+
# Test 3: --list-rules with standalone XCCDF tailoring file
31+
tailoring="$srcdir/test_tailoring_file.xml"
32+
tp="xccdf_com.example.www_profile_P1_tailored"
33+
$OSCAP info --profile $tp --list-rules $tailoring > $stdout 2> $stderr
34+
[[ -f $stderr ]]; [[ ! -s $stderr ]]; :> $stderr
35+
grep -q "xccdf_com.example.www_rule_R1" $stdout
36+
grep -q "xccdf_com.example.www_rule_R2" $stdout
37+
# R3 and R4 are deselected by tailoring
38+
! grep -q "xccdf_com.example.www_rule_R3" $stdout
39+
! grep -q "xccdf_com.example.www_rule_R4" $stdout
40+
[[ "$(wc -l < $stdout)" -eq 2 ]]
41+
:> $stdout
42+
43+
# Test 4: --list-rules with SDS containing tailoring
44+
ds_tailoring="$srcdir/test_reference_ds_with_tailoring.xml"
45+
$OSCAP info --profile $tp --list-rules $ds_tailoring > $stdout 2> $stderr
46+
[[ -f $stderr ]]; [[ ! -s $stderr ]]; :> $stderr
47+
grep -q "xccdf_com.example.www_rule_R1" $stdout
48+
grep -q "xccdf_com.example.www_rule_R2" $stdout
49+
! grep -q "xccdf_com.example.www_rule_R3" $stdout
50+
! grep -q "xccdf_com.example.www_rule_R4" $stdout
51+
[[ "$(wc -l < $stdout)" -eq 2 ]]
52+
:> $stdout
53+
54+
# Test 5: --list-rules with tailoring referencing SDS via file: prefix + cref
55+
temp_dir="$(mktemp -d)"
56+
cp "$srcdir/test_reference_ds.xml" $temp_dir
57+
tailoring_sds="test_tailoring_file_sds_cref.xml"
58+
sed "s;TEMP_DIRECTORY_PLACEHOLDER;$temp_dir;" "$srcdir/$tailoring_sds" > "$temp_dir/$tailoring_sds"
59+
$OSCAP info --profile $tp --list-rules "$temp_dir/$tailoring_sds" > $stdout 2> $stderr
60+
[[ -f $stderr ]]; [[ ! -s $stderr ]]; :> $stderr
61+
grep -q "xccdf_com.example.www_rule_R1" $stdout
62+
grep -q "xccdf_com.example.www_rule_R2" $stdout
63+
! grep -q "xccdf_com.example.www_rule_R3" $stdout
64+
! grep -q "xccdf_com.example.www_rule_R4" $stdout
65+
[[ "$(wc -l < $stdout)" -eq 2 ]]
66+
:> $stdout
67+
rm -rf "$temp_dir"
68+
69+
# Test 6: --list-rules with tailoring referencing SDS via file: prefix, no cref
70+
temp_dir="$(mktemp -d)"
71+
cp "$srcdir/test_reference_ds.xml" $temp_dir
72+
tailoring_sds_nf="test_tailoring_file_sds.xml"
73+
sed "s;TEMP_DIRECTORY_PLACEHOLDER;$temp_dir;" "$srcdir/$tailoring_sds_nf" > "$temp_dir/$tailoring_sds_nf"
74+
$OSCAP info --profile $tp --list-rules "$temp_dir/$tailoring_sds_nf" > $stdout 2> $stderr
75+
[[ -f $stderr ]]; [[ ! -s $stderr ]]; :> $stderr
76+
grep -q "xccdf_com.example.www_rule_R1" $stdout
77+
grep -q "xccdf_com.example.www_rule_R2" $stdout
78+
! grep -q "xccdf_com.example.www_rule_R3" $stdout
79+
! grep -q "xccdf_com.example.www_rule_R4" $stdout
80+
[[ "$(wc -l < $stdout)" -eq 2 ]]
81+
:> $stdout
82+
rm -rf "$temp_dir"
83+
84+
# Test 7: --list-rules with tailoring referencing SDS via file: prefix, no cref,
85+
# providing the original profile instead of the customized one
86+
temp_dir="$(mktemp -d)"
87+
cp "$srcdir/test_reference_ds.xml" $temp_dir
88+
tailoring_sds_nf="test_tailoring_file_sds.xml"
89+
sed "s;TEMP_DIRECTORY_PLACEHOLDER;$temp_dir;" "$srcdir/$tailoring_sds_nf" > "$temp_dir/$tailoring_sds_nf"
90+
$OSCAP info --profile "xccdf_com.example.www_profile_P1" --list-rules "$temp_dir/$tailoring_sds_nf" > $stdout 2> $stderr
91+
[[ -f $stdout ]]; [[ ! -s $stdout ]]; :> $stdout
92+
grep -q "Profile 'xccdf_com.example.www_profile_P1' not found in the tailoring file. Provide the customized profile ID. Get available profiles using:" "$stderr"
93+
grep -q "$ oscap info $temp_dir/$tailoring_sds_nf" "$stderr"
94+
[[ "$(wc -l < $stderr)" -eq 2 ]]
95+
:> $stderr
96+
rm -rf "$temp_dir"
97+
98+
rm -f $stdout $stderr
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
#!/usr/bin/env bash
2+
. $builddir/tests/test_common.sh
3+
4+
set -e
5+
set -o pipefail
6+
7+
stderr=$(mktemp -t ${name}.err.XXXXXX)
8+
stdout=$(mktemp -t ${name}.out.XXXXXX)
9+
10+
ds="$srcdir/test_reference_ds.xml"
11+
p1="xccdf_com.example.www_profile_P1"
12+
13+
# Test 1: --list-vars with --profile prints value IDs and resolved values
14+
$OSCAP info --profile $p1 --list-vars $ds > $stdout 2> $stderr
15+
[[ -f $stderr ]]; [[ ! -s $stderr ]]; :> $stderr
16+
grep -q "xccdf_com.example.www_value_V1 42" $stdout
17+
grep -q "xccdf_com.example.www_value_V2 custom_val" $stdout
18+
# Verify output contains exactly 2 lines
19+
[[ "$(wc -l < $stdout)" -eq 2 ]]
20+
:> $stdout
21+
22+
# Test 2: --list-vars without --profile produces an error
23+
$OSCAP info --list-vars $ds > $stdout 2> $stderr && exit 1 || true
24+
grep -q "\-\-list-vars option requires \-\-profile" $stderr
25+
:> $stdout
26+
:> $stderr
27+
28+
# Test 3: --list-vars with --list-rules produces an error
29+
$OSCAP info --profile $p1 --list-vars --list-rules $ds > $stdout 2> $stderr && exit 1 || true
30+
grep -q "The \-\-list-rules and \-\-list-vars options can't be used at the same time." $stderr
31+
:> $stdout
32+
:> $stderr
33+
34+
# Test 4: --list-vars with standalone XCCDF tailoring file
35+
tailoring="$srcdir/test_tailoring_file.xml"
36+
tp="xccdf_com.example.www_profile_P1_tailored"
37+
$OSCAP info --profile $tp --list-vars $tailoring > $stdout 2> $stderr
38+
[[ -f $stderr ]]; [[ ! -s $stderr ]]; :> $stderr
39+
# V1 is overridden to 99 by tailoring, V2 is inherited from base profile
40+
grep -q "xccdf_com.example.www_value_V1 99" $stdout
41+
grep -q "xccdf_com.example.www_value_V2 custom_val" $stdout
42+
[[ "$(wc -l < $stdout)" -eq 2 ]]
43+
:> $stdout
44+
45+
# Test 5: --list-vars with SDS containing tailoring
46+
ds_tailoring="$srcdir/test_reference_ds_with_tailoring.xml"
47+
$OSCAP info --profile $tp --list-vars $ds_tailoring > $stdout 2> $stderr
48+
[[ -f $stderr ]]; [[ ! -s $stderr ]]; :> $stderr
49+
grep -q "xccdf_com.example.www_value_V1 99" $stdout
50+
grep -q "xccdf_com.example.www_value_V2 custom_val" $stdout
51+
[[ "$(wc -l < $stdout)" -eq 2 ]]
52+
:> $stdout
53+
54+
# Test 6: --list-vars with tailoring referencing SDS via file: prefix + cref
55+
temp_dir="$(mktemp -d)"
56+
cp "$srcdir/test_reference_ds.xml" $temp_dir
57+
tailoring_sds="test_tailoring_file_sds_cref.xml"
58+
sed "s;TEMP_DIRECTORY_PLACEHOLDER;$temp_dir;" "$srcdir/$tailoring_sds" > "$temp_dir/$tailoring_sds"
59+
$OSCAP info --profile $tp --list-vars "$temp_dir/$tailoring_sds" > $stdout 2> $stderr
60+
[[ -f $stderr ]]; [[ ! -s $stderr ]]; :> $stderr
61+
grep -q "xccdf_com.example.www_value_V1 99" $stdout
62+
grep -q "xccdf_com.example.www_value_V2 custom_val" $stdout
63+
[[ "$(wc -l < $stdout)" -eq 2 ]]
64+
:> $stdout
65+
rm -rf "$temp_dir"
66+
67+
# Test 7: --list-vars with tailoring referencing SDS via file: prefix, no cref
68+
temp_dir="$(mktemp -d)"
69+
cp "$srcdir/test_reference_ds.xml" $temp_dir
70+
tailoring_sds_nf="test_tailoring_file_sds.xml"
71+
sed "s;TEMP_DIRECTORY_PLACEHOLDER;$temp_dir;" "$srcdir/$tailoring_sds_nf" > "$temp_dir/$tailoring_sds_nf"
72+
$OSCAP info --profile $tp --list-vars "$temp_dir/$tailoring_sds_nf" > $stdout 2> $stderr
73+
[[ -f $stderr ]]; [[ ! -s $stderr ]]; :> $stderr
74+
grep -q "xccdf_com.example.www_value_V1 99" $stdout
75+
grep -q "xccdf_com.example.www_value_V2 custom_val" $stdout
76+
[[ "$(wc -l < $stdout)" -eq 2 ]]
77+
:> $stdout
78+
rm -rf "$temp_dir"
79+
80+
rm -f $stdout $stderr
Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,119 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<ds:data-stream-collection xmlns:ds="http://scap.nist.gov/schema/scap/source/1.2" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:cat="urn:oasis:names:tc:entity:xmlns:xml:catalog" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="scap_org.open-scap_collection_from_xccdf_test_single_rule.xccdf.xml" schematron-version="1.3" xsi:schemaLocation="http://scap.nist.gov/schema/scap/source/1.2 https://scap.nist.gov/schema/scap/1.3/scap-source-data-stream_1.3.xsd">
3+
<ds:data-stream id="scap_org.open-scap_datastream_simple" scap-version="1.3" use-case="OTHER">
4+
<ds:checklists>
5+
<ds:component-ref id="scap_org.open-scap_cref_test_single_rule.xccdf.xml" xlink:href="#scap_org.open-scap_comp_test_single_rule.xccdf.xml">
6+
<cat:catalog>
7+
<cat:uri name="test_single_rule.oval.xml" uri="#scap_org.open-scap_cref_test_single_rule.oval.xml"/>
8+
</cat:catalog>
9+
</ds:component-ref>
10+
</ds:checklists>
11+
<ds:checks>
12+
<ds:component-ref id="scap_org.open-scap_cref_test_single_rule.oval.xml" xlink:href="#scap_org.open-scap_comp_test_single_rule.oval.xml"/>
13+
</ds:checks>
14+
</ds:data-stream>
15+
<ds:component id="scap_org.open-scap_comp_test_single_rule.oval.xml" timestamp="2021-02-01T08:07:06+01:00">
16+
<oval_definitions xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5" xmlns:ind-def="http://oval.mitre.org/XMLSchema/oval-definitions-5#independent" xmlns:oval-def="http://oval.mitre.org/XMLSchema/oval-definitions-5" xmlns:oval="http://oval.mitre.org/XMLSchema/oval-common-5" xmlns:win-def="http://oval.mitre.org/XMLSchema/oval-definitions-5#windows" xsi:schemaLocation="http://oval.mitre.org/XMLSchema/oval-definitions-5 oval-definitions-schema.xsd http://oval.mitre.org/XMLSchema/oval-definitions-5#independent independent-definitions-schema.xsd http://oval.mitre.org/XMLSchema/oval-definitions-5#windows windows-definitions-schema.xsd">
17+
<generator>
18+
<oval:schema_version>5.11.2</oval:schema_version>
19+
<oval:timestamp>2021-02-01T08:07:06+01:00</oval:timestamp>
20+
</generator>
21+
<definitions>
22+
<definition class="compliance" id="oval:x:def:1" version="1">
23+
<metadata>
24+
<title>PASS</title>
25+
<description>pass</description>
26+
</metadata>
27+
<criteria>
28+
<criterion comment="PASS test" test_ref="oval:x:tst:1"/>
29+
</criteria>
30+
</definition>
31+
</definitions>
32+
<tests>
33+
<variable_test xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5#independent" id="oval:x:tst:1" check="all" comment="always pass" version="1">
34+
<object object_ref="oval:x:obj:1"/>
35+
</variable_test>
36+
</tests>
37+
<objects>
38+
<variable_object xmlns="http://oval.mitre.org/XMLSchema/oval-definitions-5#independent" id="oval:x:obj:1" version="1" comment="x">
39+
<var_ref>oval:x:var:1</var_ref>
40+
</variable_object>
41+
</objects>
42+
<variables>
43+
<constant_variable id="oval:x:var:1" version="1" comment="x" datatype="int">
44+
<value>100</value>
45+
</constant_variable>
46+
</variables>
47+
</oval_definitions>
48+
</ds:component>
49+
<ds:component id="scap_org.open-scap_comp_test_single_rule.xccdf.xml" timestamp="2021-02-01T08:07:06+01:00">
50+
<Benchmark xmlns="http://checklists.nist.gov/xccdf/1.2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="xccdf_com.example.www_benchmark_dummy" xsi:schemaLocation="http://checklists.nist.gov/xccdf/1.1 xccdf-1.1.4.xsd" resolved="false" xml:lang="en-US">
51+
<status date="2021-01-21">accepted</status>
52+
<title>Test Benchmark</title>
53+
<description>Description</description>
54+
<reference href="https://www.animals.com">animals</reference>
55+
<reference href="https://www.fruit.com">fruit</reference>
56+
<version>1.0</version>
57+
<metadata>
58+
<dc:contributor xmlns:dc="http://purl.org/dc/elements/1.1/">OpenSCAP</dc:contributor>
59+
<dc:publisher xmlns:dc="http://purl.org/dc/elements/1.1/">OpenSCAP</dc:publisher>
60+
<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">OpenSCAP</dc:creator>
61+
<dc:source xmlns:dc="http://purl.org/dc/elements/1.1/">http://scap.nist.gov</dc:source>
62+
</metadata>
63+
<Profile id="xccdf_com.example.www_profile_P1">
64+
<title>xccdf_test_profile</title>
65+
<description>This profile is for testing.</description>
66+
<select idref="xccdf_com.example.www_rule_R1" selected="true"/>
67+
<select idref="xccdf_com.example.www_rule_R2" selected="true"/>
68+
<select idref="xccdf_com.example.www_rule_R3" selected="true"/>
69+
<select idref="xccdf_com.example.www_rule_R4" selected="true"/>
70+
<set-value idref="xccdf_com.example.www_value_V1">42</set-value>
71+
<refine-value idref="xccdf_com.example.www_value_V2" selector="custom"/>
72+
</Profile>
73+
<Value id="xccdf_com.example.www_value_V1" type="number">
74+
<title>Value V1</title>
75+
<value>10</value>
76+
<value selector="twenty">20</value>
77+
</Value>
78+
<Value id="xccdf_com.example.www_value_V2" type="string">
79+
<title>Value V2</title>
80+
<value>default_val</value>
81+
<value selector="custom">custom_val</value>
82+
</Value>
83+
<Rule selected="true" id="xccdf_com.example.www_rule_R1">
84+
<title>Rule R1</title>
85+
<description>Description</description>
86+
<reference href="https://www.animals.com">3.14</reference>
87+
<reference href="https://www.fruit.com">42.42</reference>
88+
<check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
89+
<check-content-ref href="test_single_rule.oval.xml" name="oval:x:def:1"/>
90+
</check>
91+
</Rule>
92+
<Rule selected="true" id="xccdf_com.example.www_rule_R2">
93+
<title>Rule R2</title>
94+
<description>Description</description>
95+
<reference href="https://www.animals.com">17.71.777</reference>
96+
<reference href="https://www.fruit.com">88888888</reference>
97+
<check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
98+
<check-content-ref href="test_single_rule.oval.xml" name="oval:x:def:1"/>
99+
</check>
100+
</Rule>
101+
<Rule selected="true" id="xccdf_com.example.www_rule_R3">
102+
<title>Rule R3</title>
103+
<description>Description</description>
104+
<reference href="https://www.animals.com">17.71.777</reference>
105+
<reference href="https://www.fruit.com">666</reference>
106+
<check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
107+
<check-content-ref href="test_single_rule.oval.xml" name="oval:x:def:1"/>
108+
</check>
109+
</Rule>
110+
<Rule selected="true" id="xccdf_com.example.www_rule_R4">
111+
<title>Rule R4</title>
112+
<description>Description</description>
113+
<check system="http://oval.mitre.org/XMLSchema/oval-definitions-5">
114+
<check-content-ref href="test_single_rule.oval.xml" name="oval:x:def:1"/>
115+
</check>
116+
</Rule>
117+
</Benchmark>
118+
</ds:component>
119+
</ds:data-stream-collection>

0 commit comments

Comments
 (0)