From 43dbed4326fbe7ff45d244838c291794008781ca Mon Sep 17 00:00:00 2001 From: Ontolocy Date: Sat, 10 Jan 2026 09:51:18 +0000 Subject: [PATCH] fix bug in nvd enrichment --- setup.cfg | 2 +- src/ontolocy/tools/nvd.py | 37 ++++++++++++++++++++++--------------- 2 files changed, 23 insertions(+), 16 deletions(-) diff --git a/setup.cfg b/setup.cfg index 1fe49a7..0f4caaa 100644 --- a/setup.cfg +++ b/setup.cfg @@ -1,6 +1,6 @@ [metadata] name = ontolocy -version = 0.9.2 +version = 0.9.3 author = Ontolocy description = A Python package for modeling cybersecurity data in a Neo4j graph database. long_description = file: README.md diff --git a/src/ontolocy/tools/nvd.py b/src/ontolocy/tools/nvd.py index d740913..c257332 100644 --- a/src/ontolocy/tools/nvd.py +++ b/src/ontolocy/tools/nvd.py @@ -160,26 +160,33 @@ def _parse(self, input_data, private_namespace=None, ctx=None) -> tuple: cve_to_cpe_df = pd.DataFrame(cve_to_cpe) - rel_dfs[CVERelatesToCPE.__relationshiptype__] = { - "src_df": cve_to_cpe_df[["source"]].copy(), - "tgt_df": cve_to_cpe_df[["target"]].copy(), - "props_df": cve_to_cpe_df.drop(columns=["source", "target"]).copy(), - } + if not cve_to_cpe_df.empty: - rel_dfs[CVERelatesToCWE.__relationshiptype__] = { - "src_df": pd.DataFrame(cve_to_cwe)[["source"]], - "tgt_df": pd.DataFrame(cve_to_cwe)[["target"]], - } + rel_dfs[CVERelatesToCPE.__relationshiptype__] = { + "src_df": cve_to_cpe_df[["source"]].copy(), + "tgt_df": cve_to_cpe_df[["target"]].copy(), + "props_df": cve_to_cpe_df.drop(columns=["source", "target"]).copy(), + } + + cve_to_cwe_df = pd.DataFrame(cve_to_cwe) + + if not cve_to_cwe_df.empty: + rel_dfs[CVERelatesToCWE.__relationshiptype__] = { + "src_df": cve_to_cwe_df[["source"]], + "tgt_df": cve_to_cwe_df[["target"]], + } cvss_df = pd.DataFrame(cvss_rels) - rel_dfs[OrganisationAssignedCVSSToCVE.__relationshiptype__] = { - "src_df": cvss_df[["source"]].copy(), - "tgt_df": cvss_df[["target"]].copy(), - "props_df": cvss_df.drop(columns=["source", "target"]).copy(), - } + if not cvss_df.empty: + + rel_dfs[OrganisationAssignedCVSSToCVE.__relationshiptype__] = { + "src_df": cvss_df[["source"]].copy(), + "tgt_df": cvss_df[["target"]].copy(), + "props_df": cvss_df.drop(columns=["source", "target"]).copy(), + } - return node_dfs, rel_dfs + return node_dfs, rel_dfs class NVDCVEOntolocyClient(OntolocyClient):