Skip to content

Commit b2528e7

Browse files
committed
Add the License, add a Git Importer to fireeye
Signed-off-by: ziadhany <ziadhany2016@gmail.com>
1 parent cfa7772 commit b2528e7

File tree

2 files changed

+19
-36
lines changed

2 files changed

+19
-36
lines changed

vulnerabilities/importers/__init__.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
from vulnerabilities.importers import archlinux
1212
from vulnerabilities.importers import debian
1313
from vulnerabilities.importers import debian_oval
14+
from vulnerabilities.importers import fireeye
1415
from vulnerabilities.importers import github
1516
from vulnerabilities.importers import gitlab
1617
from vulnerabilities.importers import nginx
@@ -35,6 +36,7 @@
3536
archlinux.ArchlinuxImporter,
3637
ubuntu.UbuntuImporter,
3738
debian_oval.DebianOvalImporter,
39+
fireeye.FireyeImporter,
3840
]
3941

4042
IMPORTERS_REGISTRY = {x.qualified_name: x for x in IMPORTERS_REGISTRY}

vulnerabilities/importers/fireeye.py

Lines changed: 17 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -10,50 +10,31 @@
1010
import re
1111
from typing import Iterable
1212

13-
from fetchcode.vcs.git import fetch_via_git
14-
1513
from vulnerabilities.importer import AdvisoryData
16-
from vulnerabilities.importer import Importer
14+
from vulnerabilities.importer import GitImporter
1715
from vulnerabilities.importer import Reference
18-
from vulnerabilities.importer import logger
1916
from vulnerabilities.utils import build_description
2017
from vulnerabilities.utils import dedupe
2118

2219

23-
class FireyeImporter(Importer):
24-
spdx_license_expression = "unknown"
25-
license_url = ""
26-
url = "git+https://github.com/mandiant/Vulnerability-Disclosures"
27-
28-
def advisory_data(self) -> Iterable[AdvisoryData]:
29-
forked_dir = fork_and_get_dir(self.url)
30-
for file in get_files(forked_dir):
31-
yield parse_advisory_data(file)
32-
33-
34-
def ForkError():
35-
pass
36-
37-
38-
def fork_and_get_dir(url) -> dict:
39-
try:
40-
fork_directory = fetch_via_git(url=url)
41-
return fork_directory.dest_dir
42-
except Exception as e:
43-
logger.error(f"Can't clone url {url}")
44-
raise ForkError() from e
20+
class FireyeImporter(GitImporter):
21+
spdx_license_expression = "CC-BY-SA-4.0 AND MIT"
22+
license_url = "https://github.com/mandiant/Vulnerability-Disclosures/blob/master/README.md"
4523

24+
def __init__(self):
25+
super().__init__(repo_url="git+https://github.com/mandiant/Vulnerability-Disclosures")
4626

47-
def get_files(fork_directory):
48-
for root_dir in os.listdir(fork_directory):
49-
if root_dir in ("README.md", ".git"):
50-
continue
27+
def advisory_data(self, _keep_clone=True) -> Iterable[AdvisoryData]:
28+
self.clone()
29+
for root_dir in os.listdir(self.vcs_response.dest_dir):
30+
if root_dir in ("README.md", ".git"):
31+
continue
5132

52-
for root, _, files in os.walk(os.path.join(fork_directory, root_dir)):
53-
for file in files:
54-
if file.endswith((".md", ".MD")):
55-
with open(os.path.join(root, file), "r", encoding="ISO-8859-1") as f:
56-
yield f.read()
33+
for root, _, files in os.walk(os.path.join(self.vcs_response.dest_dir, root_dir)):
34+
for file in files:
35+
if file.endswith((".md", ".MD")):
36+
with open(os.path.join(root, file), "r", encoding="ISO-8859-1") as f:
37+
yield parse_advisory_data(f.read())
5738

5839

5940
def parse_advisory_data(raw_data) -> AdvisoryData:
@@ -79,7 +60,7 @@ def parse_advisory_data(raw_data) -> AdvisoryData:
7960

8061
return AdvisoryData(
8162
aliases=get_aliases(database_id, cve_ref),
82-
summary=build_description("".join(summary), "".join(description)),
63+
summary=build_description(" ".join(summary), " ".join(description)),
8364
references=get_references(references),
8465
# date_published=disc_timeline,
8566
)

0 commit comments

Comments
 (0)