Skip to content

Commit 27a3a57

Browse files
committed
fix: get dependency relations from SBOMS
1 parent 0774fd0 commit 27a3a57

File tree

1 file changed

+5
-18
lines changed
  • backend/application/import_observations/parsers/cyclone_dx

1 file changed

+5
-18
lines changed

backend/application/import_observations/parsers/cyclone_dx/parser.py

Lines changed: 5 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -96,15 +96,15 @@ def get_observations(self, data: dict, product: Product, branch: Optional[Branch
9696
payload = base64.b64decode(cosign_output["payload"]).decode("utf-8")
9797
sbom_data = json.loads(payload)["predicate"]
9898

99-
self.components = self._get_components(data, sbom_data)
100-
self.dependencies = self._get_dependencies(data)
101-
observations = self._create_observations(data, sbom_data)
99+
self.components = self._get_components(sbom_data or data)
100+
self.dependencies = self._get_dependencies(sbom_data or data)
101+
observations = self._create_observations(data)
102102

103103
return observations
104104

105105
def get_license_components(self, data: dict) -> list[License_Component]:
106106
if not self.components:
107-
self.components = self._get_components(data, None)
107+
self.components = self._get_components(data)
108108
if not self.metadata:
109109
self.metadata = self._get_metadata(data)
110110
if not self.dependencies:
@@ -139,7 +139,7 @@ def _add_license_component_evidence(
139139
evidence.append(dumps(component.json))
140140
license_component.unsaved_evidences.append(evidence)
141141

142-
def _get_components(self, data: dict, sbom_data: Optional[dict]) -> dict[str, Component]:
142+
def _get_components(self, data: dict) -> dict[str, Component]:
143143
components_dict = {}
144144
components_list: list[Component] = []
145145

@@ -151,15 +151,6 @@ def _get_components(self, data: dict, sbom_data: Optional[dict]) -> dict[str, Co
151151
components = self._get_sbom_component_with_subs(sbom_component)
152152
components_list.extend(components)
153153

154-
if sbom_data:
155-
root_components = self._get_root_component_with_subs(sbom_data)
156-
components_list.extend(root_components)
157-
158-
sbom_components = sbom_data.get("components", [])
159-
for sbom_component in sbom_components:
160-
components = self._get_sbom_component_with_subs(sbom_component)
161-
components_list.extend(components)
162-
163154
for component in components_list:
164155
components_dict[component.bom_ref] = component
165156

@@ -223,14 +214,10 @@ def _get_component(self, component_data: dict[str, Any]) -> Optional[Component]:
223214
def _create_observations( # pylint: disable=too-many-locals
224215
self,
225216
data: dict,
226-
sbom_data: Optional[dict],
227217
) -> list[Observation]:
228218
observations = []
229219
component_dependencies_cache: dict[str, str] = {}
230220

231-
if not sbom_data:
232-
sbom_data = data
233-
234221
for vulnerability in data.get("vulnerabilities", []):
235222
vulnerability_id = vulnerability.get("id")
236223
cvss3_score, cvss3_vector = self._get_cvss(vulnerability, 3)

0 commit comments

Comments
 (0)