Skip to content

Commit daea8e4

Browse files
fthdrmzzzterriko
andauthored
fix: parse CPE names correctly #4041 (#4063)
Signed-off-by: fthdrmzzz <[email protected]> Co-authored-by: Terri Oda <[email protected]>
1 parent ec67e43 commit daea8e4

File tree

1 file changed

+4
-2
lines changed

1 file changed

+4
-2
lines changed

cve_bin_tool/data_sources/nvd_source.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,8 @@ def parse_node(self, node: dict[str, list[dict[str, str]]]) -> list[dict[str, st
183183
if "cpe_match" in node:
184184
vulnerable_matches = (m for m in node["cpe_match"] if m["vulnerable"])
185185
for cpe_match in vulnerable_matches:
186-
cpe_split = cpe_match["cpe23Uri"].split(":")
186+
# split on `:` only if it's not escaped
187+
cpe_split = re.split(r"(?<!\\):", cpe_match["cpe23Uri"])
187188
affects = {
188189
"vendor": cpe_split[3],
189190
"product": cpe_split[4],
@@ -290,7 +291,8 @@ def parse_node_api2(
290291
if "cpeMatch" in node:
291292
vulnerable_matches = (m for m in node["cpeMatch"] if m["vulnerable"])
292293
for cpe_match in vulnerable_matches:
293-
cpe_split = cpe_match["criteria"].split(":")
294+
# split on `:` only if it's not escaped
295+
cpe_split = re.split(r"(?<!\\):", cpe_match["criteria"])
294296
affects = {
295297
"vendor": cpe_split[3],
296298
"product": cpe_split[4],

0 commit comments

Comments
 (0)