Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 7 additions & 0 deletions cvelib/cve.py
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,13 @@ def setPriority(self, s: str) -> None:

def setDiscoveredBy(self, s: str) -> None:
"""Set Discovered-by"""
seen: set = set()
for d in s.split(","):
d = d.strip()
if d != "":
if d in seen:
raise CveException("duplicate discoverer '%s'" % d)
seen.add(d)
self.discoveredBy = s
self.data["Discovered-by"] = self.discoveredBy

Expand Down
13 changes: 10 additions & 3 deletions cvelib/github.py
Original file line number Diff line number Diff line change
Expand Up @@ -340,21 +340,28 @@ def parse(s: str) -> List[Union[GHDependabot, GHSecret, GHCode]]:
raise CveException("invalid yaml:\n'%s'" % s)

ghas: List[Union[GHDependabot, GHSecret, GHCode]] = []
seen_urls: set = set()
for item in yml:
if "type" not in item:
raise CveException("invalid GHAS document: 'type' missing for item")

obj: Union[GHDependabot, GHSecret, GHCode]
if item["type"] == "dependabot":
ghas.append(GHDependabot(item))
obj = GHDependabot(item)
elif item["type"] == "secret-scanning":
ghas.append(GHSecret(item))
obj = GHSecret(item)
elif item["type"] == "code-scanning":
ghas.append(GHCode(item))
obj = GHCode(item)
else:
raise CveException(
"invalid GHAS document: unknown GHAS type '%s'" % item["type"]
)

if obj.url != "unavailable" and obj.url in seen_urls:
raise CveException("duplicate GHAS url '%s'" % obj.url)
seen_urls.add(obj.url)
ghas.append(obj)
Comment thread
jdstrand marked this conversation as resolved.

return ghas


Expand Down
2 changes: 2 additions & 0 deletions cvelib/pkg.py
Original file line number Diff line number Diff line change
Expand Up @@ -166,6 +166,8 @@ def setTags(self, tagList: List[Tuple[str, str]]) -> None:
t = t.strip()
if not rePatterns["pkg-tags"].search(t):
raise CveException("invalid tag '%s'" % t)
if t in self.tags[tagKey]:
raise CveException("duplicate tag '%s'" % t)
self.tags[tagKey].append(t)

def setPriorities(self, priorityList: List[Tuple[str, str]]) -> None:
Expand Down
12 changes: 11 additions & 1 deletion cvelib/scan.py
Original file line number Diff line number Diff line change
Expand Up @@ -267,17 +267,27 @@ def parse(s: str) -> List[ScanOCI]:
raise CveException("invalid yaml:\n'%s'" % s)

mans: List[ScanOCI] = []
seen_keys: set = set()
for item in yml:
if "type" not in item:
raise CveException("invalid Scan-Reports document: 'type' missing for item")

if item["type"] == "oci":
mans.append(ScanOCI(item))
obj = ScanOCI(item)
else:
raise CveException(
"invalid Scan-Reports document: unknown type '%s'" % item["type"]
)

key = (obj.component, obj.detectedIn, obj.advisory, obj.url)
if key in seen_keys:
raise CveException(
"duplicate scan entry '%s' '%s' '%s' '%s'"
% (obj.component, obj.detectedIn, obj.advisory, obj.url)
Comment thread
jdstrand marked this conversation as resolved.
)
seen_keys.add(key)
mans.append(obj)

return mans


Expand Down
Loading
Loading