]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-112844: Update CPE references for external dependencies (#118521)
authorSeth Michael Larson <seth@python.org>
Mon, 20 May 2024 17:27:09 +0000 (13:27 -0400)
committerGitHub <noreply@github.com>
Mon, 20 May 2024 17:27:09 +0000 (13:27 -0400)
Tools/build/generate_sbom.py

index 258b58c03c6800332b32e450e33174f59f71684f..c08568f2e00326166a65c8ea114aafb31bbe3efd 100644 (file)
@@ -305,7 +305,21 @@ def create_externals_sbom() -> None:
 
     # Set the versionInfo and downloadLocation fields for all packages.
     for package in sbom_data["packages"]:
-        package["versionInfo"] = externals_name_to_version[package["name"]]
+        package_version = externals_name_to_version[package["name"]]
+
+        # Update the version information in all the locations.
+        package["versionInfo"] = package_version
+        for external_ref in package["externalRefs"]:
+            if external_ref["referenceType"] != "cpe23Type":
+                continue
+            # Version is the fifth field of a CPE.
+            cpe23ref = external_ref["referenceLocator"]
+            external_ref["referenceLocator"] = re.sub(
+                r"\A(cpe(?::[^:]+){4}):[^:]+:",
+                fr"\1:{package_version}:",
+                cpe23ref
+            )
+
         download_location = (
             f"https://github.com/python/cpython-source-deps/archive/refs/tags/{externals_name_to_git_tag[package['name']]}.tar.gz"
         )