From d8ed103e729abfa6140bd739227368172c8438bd Mon Sep 17 00:00:00 2001 From: Kubilay Erdogan <1839554+kublaios@users.noreply.github.com> Date: Wed, 2 Jul 2025 16:39:50 +0200 Subject: [PATCH 1/3] Add support for parsing Swift `Package.resolved` schema 2+. --- cve_bin_tool/parsers/swift.py | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/cve_bin_tool/parsers/swift.py b/cve_bin_tool/parsers/swift.py index bbe6d6b2e9..ebfbe8eb35 100644 --- a/cve_bin_tool/parsers/swift.py +++ b/cve_bin_tool/parsers/swift.py @@ -63,10 +63,22 @@ def run_checker(self, filename): except JSONDecodeError as e: self.logger.debug(f"Error occurred while parsing {filename}: {e}") return - for package in content["object"]["pins"]: - product = package["package"] + + # Check the schema version + if content["version"] == 1: + pins_object = content["object"] + pins = pins_object["pins"] + package_key = "package" + repo_key = "repositoryURL" + else: + pins = content["pins"] + package_key = "identity" + repo_key = "location" + + for package in pins: + product = package[package_key] version = package["state"]["version"] - repository_url = package.get("repositoryURL", None) + repository_url = package.get(repo_key, None) domain = None if repository_url: parse = urlparse(repository_url) From 9f944118b5a21c0b2487b69f1276dc05ff75a466 Mon Sep 17 00:00:00 2001 From: Kubilay Erdogan <1839554+kublaios@users.noreply.github.com> Date: Thu, 3 Jul 2025 12:18:41 +0200 Subject: [PATCH 2/3] Log and continue in case of exception. --- cve_bin_tool/data_sources/nvd_source.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cve_bin_tool/data_sources/nvd_source.py b/cve_bin_tool/data_sources/nvd_source.py index 3a5f00c03d..57fda85322 100644 --- a/cve_bin_tool/data_sources/nvd_source.py +++ b/cve_bin_tool/data_sources/nvd_source.py @@ -437,7 +437,10 @@ async def fetch_cves(self): iter_tasks = asyncio.as_completed(tasks) for task in iter_tasks: - await task + try: + await task + except Exception as e: + self.logger.warning(f"A task failed and was skipped: {e}") await self.session.close() self.session = None From 37f7175d8eee5578e86b76ca9e0306b0253cd547 Mon Sep 17 00:00:00 2001 From: Kubilay Erdogan <1839554+kublaios@users.noreply.github.com> Date: Thu, 3 Jul 2025 19:08:07 +0200 Subject: [PATCH 3/3] Revert "Log and continue in case of exception." This reverts commit 9f944118b5a21c0b2487b69f1276dc05ff75a466. --- cve_bin_tool/data_sources/nvd_source.py | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/cve_bin_tool/data_sources/nvd_source.py b/cve_bin_tool/data_sources/nvd_source.py index 57fda85322..3a5f00c03d 100644 --- a/cve_bin_tool/data_sources/nvd_source.py +++ b/cve_bin_tool/data_sources/nvd_source.py @@ -437,10 +437,7 @@ async def fetch_cves(self): iter_tasks = asyncio.as_completed(tasks) for task in iter_tasks: - try: - await task - except Exception as e: - self.logger.warning(f"A task failed and was skipped: {e}") + await task await self.session.close() self.session = None