From 76f3837779e7a6d7be5f34558c9774bc878ff61f Mon Sep 17 00:00:00 2001 From: NataliaPerez08 Date: Fri, 21 Aug 2026 13:27:43 -0600 Subject: [PATCH] Fix NIST platform builder for unparseable versions --- netutils/nist.py | 3 ++- tests/unit/test_nist.py | 16 ++++++++++++++++ 2 files changed, 18 insertions(+), 1 deletion(-) diff --git a/netutils/nist.py b/netutils/nist.py index a3162805..32f3b5d0 100644 --- a/netutils/nist.py +++ b/netutils/nist.py @@ -219,7 +219,8 @@ def _os_platform_object_builder(vendor: str, platform: str, version: str) -> obj } if version_parser: - field_values.update(version_parser) + valid_fields = {field[0] for field in class_fields} + field_values.update({key: value for key, value in version_parser.items() if key in valid_fields}) class_name = f"{vendor.capitalize()}{platform.capitalize()}" get_nist_urls_func = get_nist_url_funcs.get(vendor, {}).get(platform) or get_nist_url_funcs["default"] diff --git a/tests/unit/test_nist.py b/tests/unit/test_nist.py index 2d1c8302..187dbedc 100644 --- a/tests/unit/test_nist.py +++ b/tests/unit/test_nist.py @@ -48,3 +48,19 @@ def test_get_nist_urls_failed(): def test_get_nist_vendor_platform_urls(): platform_obj = nist.get_nist_vendor_platform_urls("cisco", "ios", "15.5") assert platform_obj == ["https://services.nvd.nist.gov/rest/json/cves/2.0?cpeName=cpe:2.3:o:cisco:ios:15.5:*"] + + +def test_os_platform_object_builder_with_unparseable_version(): + platform_obj = nist._os_platform_object_builder( + "cisco", + "ios", + "03.03.05SE", + ) + + assert platform_obj.vendor == "cisco" + assert platform_obj.os_type == "ios" + assert platform_obj.version_string == "03.03.05SE" + assert platform_obj.vendor_metadata is False + assert platform_obj.major is None + assert platform_obj.minor is None + assert platform_obj.patch is None