def wrap_entries(target_entries): """ Wraps all Vulnerability/Nvd entries into the VulnerabilityView class. :return: """ new_entries = [] if not target_entries: return first_element = target_entries[0] if isinstance(first_element, Nvd): for nvd in target_entries: vuln_view = VulnerabilityView(None, nvd, preview=True) new_entries.append(vuln_view) elif isinstance(first_element, Vulnerability): for vulnerability in target_entries: vuln_view = VulnerabilityView(vulnerability, None, preview=True) new_entries.append(vuln_view) else: for [vulnerability, nvd] in target_entries: vuln_view = VulnerabilityView(vulnerability, nvd, preview=True) new_entries.append(vuln_view) del target_entries[:] target_entries.extend(new_entries)
def wrap_entries(target_entries): """ Wraps all Vulnerability/Nvd entries into the VulnerabilityView class. :return: """ new_entries = [] if not target_entries: return first_element = target_entries[0] if isinstance(first_element, Nvd): for nvd in target_entries: vuln_view = VulnerabilityView(None, nvd, preview=True) new_entries.append(vuln_view) elif isinstance(first_element, Vulnerability): for vulnerability in target_entries: vuln_view = VulnerabilityView(vulnerability, None, preview=True) new_entries.append(vuln_view) else: for columns in target_entries: vulnerability = columns[0] nvd = columns[1] if len(columns) > 2 and isinstance(columns[2], bool): annotation_exists = columns[2] vulnerability.set_has_annotations(annotation_exists) vuln_view = VulnerabilityView(vulnerability, nvd, preview=True) new_entries.append(vuln_view) del target_entries[:] target_entries.extend(new_entries)
def _wrap_items(self): """ Wraps Vulnerability/Nvd items with the VulnerabilityView class. :return: """ new_items = [] if not self.items: return first_element = self.items[0] if isinstance(first_element, Nvd): for nvd in self.items: vuln_view = VulnerabilityView(None, nvd, preview=True) new_items.append(vuln_view) elif isinstance(first_element, Vulnerability): for vulnerability in self.items: vuln_view = VulnerabilityView(vulnerability, None, preview=True) new_items.append(vuln_view) else: for [vulnerability, nvd] in self.items: vuln_view = VulnerabilityView(vulnerability, nvd, preview=True) new_items.append(vuln_view) self.items = new_items
def _fetch_data(self): self._fetch_by_id() commit = self.get_master_commit() if commit: commit = self._vulnerability.master_commit self.commit_link = commit.commit_link self.commit_hash = commit.commit_hash self.repo_url = commit.repo_url # Initialize VCS specific data. self._init_repo_data() self._fetch_by_commit_hash() # Fetch IDs from vulnerability entry if it exists. if self._vulnerability: self.vcdb_id = str(self._vulnerability.vcdb_id) self.vuln_id = str(self._vulnerability.id) if self._vulnerability.cve_id: self.cve_id = self._vulnerability.cve_id # Fetch corresponding NVD data if possible. if self.cve_id: self._nvd_data = Nvd.get_by_cve_id(self.cve_id) elif self.commit_hash: self._nvd_data = Nvd.get_by_commit_hash(self.commit_hash) # Make sure to always use the properly formatted CVE-ID if available. if self._nvd_data: self.cve_id = self._nvd_data.cve_id if self._vulnerability or self._nvd_data: self.fetch_tree_cache() self.vulnerability_view = VulnerabilityView( self._vulnerability, self._nvd_data)