diff --git a/backport-fix-deprecated-getiterator-function.patch b/backport-fix-deprecated-getiterator-function.patch new file mode 100644 index 0000000000000000000000000000000000000000..cfc41669c91bdc51d1b109f3fc645d1a0d7d271b --- /dev/null +++ b/backport-fix-deprecated-getiterator-function.patch @@ -0,0 +1,55 @@ +From b0adc1d53780def4a95e310b6d26bb91ee97177e Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Mon, 8 Jun 2020 13:27:41 +0200 +Subject: [PATCH] fix deprecated getiterator function + +Signed-off-by: HuaxinLu +--- + ssg/build_cpe.py | 6 +++--- + ssg/id_translate.py | 2 +- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/ssg/build_cpe.py b/ssg/build_cpe.py +index 2e5d24a5da..8c046777a5 100644 +--- a/ssg/build_cpe.py ++++ b/ssg/build_cpe.py +@@ -17,7 +17,7 @@ def extract_subelement(objects, sub_elem_type): + """ + + for obj in objects: +- for subelement in obj.getiterator(): ++ for subelement in obj.iter(): + if subelement.get(sub_elem_type): + sub_element = subelement.get(sub_elem_type) + return sub_element +@@ -44,12 +44,12 @@ def extract_referred_nodes(tree_with_refs, tree_with_ids, attrname): + reflist = [] + elementlist = [] + +- for element in tree_with_refs.getiterator(): ++ for element in tree_with_refs.iter(): + value = element.get(attrname) + if value is not None: + reflist.append(value) + +- for element in tree_with_ids.getiterator(): ++ for element in tree_with_ids.iter(): + if element.get("id") in reflist: + elementlist.append(element) + +diff --git a/ssg/id_translate.py b/ssg/id_translate.py +index 72b07be181..ba92259049 100644 +--- a/ssg/id_translate.py ++++ b/ssg/id_translate.py +@@ -64,7 +64,7 @@ class IDTranslator(object): + ) + + def translate(self, tree, store_defname=False): +- for element in tree.getiterator(): ++ for element in tree.iter(): + idname = element.get("id") + if idname: + # store the old name if requested (for OVAL definitions) +-- +2.30.0 + diff --git a/backport-fix-deprecated-instance-of-element.getchildren.patch b/backport-fix-deprecated-instance-of-element.getchildren.patch new file mode 100644 index 0000000000000000000000000000000000000000..4563d0ef25ec013259adc727ea899a56334460e2 --- /dev/null +++ b/backport-fix-deprecated-instance-of-element.getchildren.patch @@ -0,0 +1,40 @@ +From e435bf2dc59d652710104a1c59332e410b12bb64 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Mon, 8 Jun 2020 12:33:48 +0200 +Subject: [PATCH] fix deprecated instance of element.getchildren + +Signed-off-by: HuaxinLu +--- + ssg/build_remediations.py | 2 +- + ssg/build_stig.py | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/ssg/build_remediations.py b/ssg/build_remediations.py +index fdde0f268a..c18d6bd549 100644 +--- a/ssg/build_remediations.py ++++ b/ssg/build_remediations.py +@@ -735,7 +735,7 @@ def expand_xccdf_subs(fix, remediation_type, remediation_functions): + # First concat output form of modified fix text (including text appended + # to all children of the fix) + modfix = [fix.text] +- for child in fix.getchildren(): ++ for child in list(fix): + if child is not None and child.text is not None: + modfix.append(child.text) + modfixtext = "".join(modfix) +diff --git a/ssg/build_stig.py b/ssg/build_stig.py +index 528285f3d1..6122981fcb 100644 +--- a/ssg/build_stig.py ++++ b/ssg/build_stig.py +@@ -38,7 +38,7 @@ def add_references(reference, destination): + for ref in refs: + if (ref.get('href').startswith(stig_refs) and + ref.text in dictionary): +- index = rule.getchildren().index(ref) ++ index = list(rule).index(ref) + new_ref = ET.Element( + '{%s}reference' % XCCDF11_NS, {'href': stig_ns}) + new_ref.text = dictionary[ref.text] +-- +2.30.0 + diff --git a/backport-fix-for-older-python-versions-lacking-.iter-method.patch b/backport-fix-for-older-python-versions-lacking-.iter-method.patch new file mode 100644 index 0000000000000000000000000000000000000000..6c7be3588e2b1d8072fae06f6bc7491b1d71f8f0 --- /dev/null +++ b/backport-fix-for-older-python-versions-lacking-.iter-method.patch @@ -0,0 +1,124 @@ +From 435ad2a81f4d56da42a2b24cad9e0e04d0523fd4 Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Tue, 9 Jun 2020 18:55:42 +0200 +Subject: [PATCH] fix for older python versions lacking .iter method + +Signed-off-by: HuaxinLu +--- + build-scripts/verify_references.py | 8 +++++- + .../pcidss/transform_benchmark_to_pcidss.py | 8 +++++- + ssg/build_cpe.py | 28 +++++++++++++++++-- + ssg/id_translate.py | 9 +++++- + 4 files changed, 47 insertions(+), 6 deletions(-) + +diff --git a/build-scripts/verify_references.py b/build-scripts/verify_references.py +index 95d387f46f..003aa4c48c 100755 +--- a/build-scripts/verify_references.py ++++ b/build-scripts/verify_references.py +@@ -179,7 +179,13 @@ def main(): + check_content_refs = xccdftree.findall(".//{%s}check-content-ref" + % xccdf_ns) + +- xccdf_parent_map = dict((c, p) for p in xccdftree.iter() for c in p) ++ # decide on usage of .iter or .getiterator method of elementtree class. ++ # getiterator is deprecated in Python 3.9, but iter is not available in ++ # older versions ++ if getattr(xccdftree, 'iter', None) == None: ++ xccdf_parent_map = dict((c, p) for p in xccdftree.getiterator() for c in p) ++ else: ++ xccdf_parent_map = dict((c, p) for p in xccdftree.iter() for c in p) + # now we can actually do the verification work here + if options.rules_with_invalid_checks or options.all_checks: + for check_content_ref in check_content_refs: +diff --git a/shared/transforms/pcidss/transform_benchmark_to_pcidss.py b/shared/transforms/pcidss/transform_benchmark_to_pcidss.py +index c94b12c45c..05df5a9889 100755 +--- a/shared/transforms/pcidss/transform_benchmark_to_pcidss.py ++++ b/shared/transforms/pcidss/transform_benchmark_to_pcidss.py +@@ -111,7 +111,13 @@ def main(): + benchmark.findall(".//{%s}Value" % (XCCDF_NAMESPACE)): + values.append(value) + +- parent_map = dict((c, p) for p in benchmark.iter() for c in p) ++ # decide on usage of .iter or .getiterator method of elementtree class. ++ # getiterator is deprecated in Python 3.9, but iter is not available in ++ # older versions ++ if getattr(benchmark, "iter", None) == None: ++ parent_map = dict((c, p) for p in benchmark.getiterator() for c in p) ++ else: ++ parent_map = dict((c, p) for p in benchmark.iter() for c in p) + for rule in \ + benchmark.findall(".//{%s}Rule" % (XCCDF_NAMESPACE)): + parent_map[rule].remove(rule) +diff --git a/ssg/build_cpe.py b/ssg/build_cpe.py +index 8c046777a5..26f182395e 100644 +--- a/ssg/build_cpe.py ++++ b/ssg/build_cpe.py +@@ -17,7 +17,14 @@ def extract_subelement(objects, sub_elem_type): + """ + + for obj in objects: +- for subelement in obj.iter(): ++ # decide on usage of .iter or .getiterator method of elementtree class. ++ # getiterator is deprecated in Python 3.9, but iter is not available in ++ # older versions ++ if getattr(obj, "iter", None) == None: ++ obj_iterator = obj.getiterator() ++ else: ++ obj_iterator = obj.iter() ++ for subelement in obj_iterator: + if subelement.get(sub_elem_type): + sub_element = subelement.get(sub_elem_type) + return sub_element +@@ -44,12 +51,27 @@ def extract_referred_nodes(tree_with_refs, tree_with_ids, attrname): + reflist = [] + elementlist = [] + +- for element in tree_with_refs.iter(): ++ ++ # decide on usage of .iter or .getiterator method of elementtree class. ++ # getiterator is deprecated in Python 3.9, but iter is not available in ++ # older versions ++ if getattr(tree_with_refs, "iter", None) == None: ++ tree_with_refs_iterator = tree_with_refs.getiterator() ++ else: ++ tree_with_refs_iterator = tree_with_refs.iter() ++ for element in tree_with_refs_iterator: + value = element.get(attrname) + if value is not None: + reflist.append(value) + +- for element in tree_with_ids.iter(): ++ # decide on usage of .iter or .getiterator method of elementtree class. ++ # getiterator is deprecated in Python 3.9, but iter is not available in ++ # older versions ++ if getattr(tree_with_ids, "iter", None) == None: ++ tree_with_ids_iterator = tree_with_ids.getiterator() ++ else: ++ tree_with_ids_iterator = tree_with_ids.iter() ++ for element in tree_with_ids_iterator: + if element.get("id") in reflist: + elementlist.append(element) + +diff --git a/ssg/id_translate.py b/ssg/id_translate.py +index ba92259049..520c47fbfd 100644 +--- a/ssg/id_translate.py ++++ b/ssg/id_translate.py +@@ -64,7 +64,14 @@ class IDTranslator(object): + ) + + def translate(self, tree, store_defname=False): +- for element in tree.iter(): ++ # decide on usage of .iter or .getiterator method of elementtree class. ++ # getiterator is deprecated in Python 3.9, but iter is not available in ++ # older versions ++ if getattr(tree, "iter", None) == None: ++ tree_iterator = tree.getiterator() ++ else: ++ tree_iterator = tree.iter() ++ for element in tree_iterator: + idname = element.get("id") + if idname: + # store the old name if requested (for OVAL definitions) +-- +2.30.0 + diff --git a/backport-fix-python-imports-of-ElementTree.patch b/backport-fix-python-imports-of-ElementTree.patch new file mode 100644 index 0000000000000000000000000000000000000000..6f6085b28257ef7d34f9b7d64f66f8827ef42c17 --- /dev/null +++ b/backport-fix-python-imports-of-ElementTree.patch @@ -0,0 +1,43 @@ +From 27dc7ecafe8ab5c2e0bbbb2fcdc399bece5c250e Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Mon, 8 Jun 2020 12:02:16 +0200 +Subject: [PATCH] fix python imports of ElementTree + +Signed-off-by: HuaxinLu +--- + shared/transforms/pcidss/transform_benchmark_to_pcidss.py | 5 ++++- + ssg/xml.py | 2 +- + 2 files changed, 5 insertions(+), 2 deletions(-) + +diff --git a/shared/transforms/pcidss/transform_benchmark_to_pcidss.py b/shared/transforms/pcidss/transform_benchmark_to_pcidss.py +index 3023e0435f..0ceaf727d3 100755 +--- a/shared/transforms/pcidss/transform_benchmark_to_pcidss.py ++++ b/shared/transforms/pcidss/transform_benchmark_to_pcidss.py +@@ -20,7 +20,10 @@ + # Martin Preisler + + import logging +-from xml.etree import cElementTree as ElementTree ++try: ++ from xml.etree import cElementTree as ElementTree ++except ImportError: ++ from xml.etree import ElementTree as ElementTree + import json + import sys + import os +diff --git a/ssg/xml.py b/ssg/xml.py +index 736875a9d2..71c1381c23 100644 +--- a/ssg/xml.py ++++ b/ssg/xml.py +@@ -9,7 +9,7 @@ from .constants import xml_version, oval_header, timestamp, PREFIX_TO_NS + try: + from xml.etree import cElementTree as ElementTree + except ImportError: +- import cElementTree as ElementTree ++ from xml.etree import ElementTree as ElementTree + + + def oval_generated_header(product_name, schema_version, ssg_version): +-- +2.30.0 + diff --git a/backport-fix-remaining-getchildren-and-getiterator-functions.patch b/backport-fix-remaining-getchildren-and-getiterator-functions.patch new file mode 100644 index 0000000000000000000000000000000000000000..cc450b3e98ad6fc9220436fde5c8419975392e67 --- /dev/null +++ b/backport-fix-remaining-getchildren-and-getiterator-functions.patch @@ -0,0 +1,54 @@ +From a0da16c5eeb9a7414f7f2a37a6b270c8d04b2ddf Mon Sep 17 00:00:00 2001 +From: Vojtech Polasek +Date: Mon, 8 Jun 2020 14:01:55 +0200 +Subject: [PATCH] fix remaining getchildren and getiterator functions + +Signed-off-by: HuaxinLu +--- + build-scripts/sds_move_ocil_to_checks.py | 2 +- + build-scripts/verify_references.py | 2 +- + shared/transforms/pcidss/transform_benchmark_to_pcidss.py | 2 +- + 3 files changed, 3 insertions(+), 3 deletions(-) + +diff --git a/build-scripts/sds_move_ocil_to_checks.py b/build-scripts/sds_move_ocil_to_checks.py +index 5f5139659e..64dc19084d 100755 +--- a/build-scripts/sds_move_ocil_to_checks.py ++++ b/build-scripts/sds_move_ocil_to_checks.py +@@ -106,7 +106,7 @@ def move_ocil_content_from_ds_extended_component_to_ds_component(datastreamtree, + timestamp = extendedcomp.get('timestamp') + + # Get children elements of containing OCIL content +- extchildren = extendedcomp.getchildren() ++ extchildren = list(extendedcomp) + # There should be just one OCIL subcomponent in + if len(extchildren) != 1: + sys.stderr.write("ds:extended-component contains more than one element!" +diff --git a/build-scripts/verify_references.py b/build-scripts/verify_references.py +index 69b3e2d1f7..95d387f46f 100755 +--- a/build-scripts/verify_references.py ++++ b/build-scripts/verify_references.py +@@ -179,7 +179,7 @@ def main(): + check_content_refs = xccdftree.findall(".//{%s}check-content-ref" + % xccdf_ns) + +- xccdf_parent_map = dict((c, p) for p in xccdftree.getiterator() for c in p) ++ xccdf_parent_map = dict((c, p) for p in xccdftree.iter() for c in p) + # now we can actually do the verification work here + if options.rules_with_invalid_checks or options.all_checks: + for check_content_ref in check_content_refs: +diff --git a/shared/transforms/pcidss/transform_benchmark_to_pcidss.py b/shared/transforms/pcidss/transform_benchmark_to_pcidss.py +index 0ceaf727d3..c94b12c45c 100755 +--- a/shared/transforms/pcidss/transform_benchmark_to_pcidss.py ++++ b/shared/transforms/pcidss/transform_benchmark_to_pcidss.py +@@ -111,7 +111,7 @@ def main(): + benchmark.findall(".//{%s}Value" % (XCCDF_NAMESPACE)): + values.append(value) + +- parent_map = dict((c, p) for p in benchmark.getiterator() for c in p) ++ parent_map = dict((c, p) for p in benchmark.iter() for c in p) + for rule in \ + benchmark.findall(".//{%s}Rule" % (XCCDF_NAMESPACE)): + parent_map[rule].remove(rule) +-- +2.30.0 + diff --git a/scap-security-guide.spec b/scap-security-guide.spec index 3b98e9fe934db389c0e4cfeb6d05392629de9084..db6d100d944a282e671e7a0823f186e5aea55721 100644 --- a/scap-security-guide.spec +++ b/scap-security-guide.spec @@ -1,10 +1,17 @@ Name: scap-security-guide Version: 0.1.49 -Release: 1 +Release: 2 Summary: Security guidance and baselines in SCAP formats License: BSD-3-Clause URL: https://github.com/ComplianceAsCode/content/ Source0: https://github.com/ComplianceAsCode/content/releases/download/v%{version}/scap-security-guide-%{version}.tar.bz2 + +Patch0001:backport-fix-python-imports-of-ElementTree.patch +Patch0002:backport-fix-deprecated-instance-of-element.getchildren.patch +Patch0003:backport-fix-deprecated-getiterator-function.patch +Patch0004:backport-fix-remaining-getchildren-and-getiterator-functions.patch +Patch0005:backport-fix-for-older-python-versions-lacking-.iter-method.patch + BuildArch: noarch BuildRequires: libxslt, expat, python3, openscap-scanner >= 1.2.5, cmake >= 3.8, python3-jinja2, python3-PyYAML Requires: xml-common, openscap-scanner >= 1.2.5 @@ -31,7 +38,7 @@ hardening guidances that have been generated from XCCDF benchmarks present in %{name} package. %prep -%setup -q +%autosetup -n %{name}-%{version} -p1 mkdir build %build @@ -58,6 +65,9 @@ cd build %doc %{_docdir}/%{name}/tables/*.html %changelog +* Sat Feb 29 2022 HuaxinLu - 0.1.49-2 +- fix for python upgrade + * Wed Oct 28 2020 Anan Fu - 0.1.49-1 - upgrade to disable python2