Skip to content

Commit 77702fd

Browse files
committed
Minor fixes and improvements in Github Importer
* The github importer used to abandon a vulnerability if the affected package had invalid name. This commit changes that behaviour to instead skip the package and import the vulnerability * This commit also enables github api to import vulnerabilities for python and rubygems packages. Signed-off-by: Shivam Sandbhor <shivam.sandbhor@gmail.com>
1 parent 7f8ae63 commit 77702fd

1 file changed

Lines changed: 27 additions & 21 deletions

File tree

vulnerabilities/importers/github.py

Lines changed: 27 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,8 @@
4242
from vulnerabilities.package_managers import MavenVersionAPI
4343
from vulnerabilities.package_managers import NugetVersionAPI
4444
from vulnerabilities.package_managers import ComposerVersionAPI
45+
from vulnerabilities.package_managers import PypiVersionAPI
46+
from vulnerabilities.package_managers import RubyVersionAPI
4547

4648
# set of all possible values of first '%s' = {'MAVEN','COMPOSER', 'NUGET'}
4749
# second '%s' is interesting, it will have the value '' for the first request,
@@ -132,6 +134,8 @@ def set_version_api(self, ecosystem: str) -> None:
132134
"MAVEN": MavenVersionAPI,
133135
"NUGET": NugetVersionAPI,
134136
"COMPOSER": ComposerVersionAPI,
137+
"PIP": PypiVersionAPI,
138+
"RUBYGEMS": RubyVersionAPI
135139
}
136140
versioner = versioners.get(ecosystem)
137141
if versioner:
@@ -146,14 +150,14 @@ def process_name(ecosystem: str, pkg_name: str) -> Optional[Tuple[Optional[str],
146150
return
147151
ns, name = artifact_comps
148152
return ns, name
149-
150-
if ecosystem == "NUGET":
151-
return None, pkg_name
152-
153+
153154
if ecosystem == "COMPOSER":
154155
vendor, name = pkg_name.split("/")
155156
return vendor, name
156157

158+
if ecosystem == "NUGET" or ecosystem == "PIP" or ecosystem == "RUBYGEMS":
159+
return None, pkg_name
160+
157161
def collect_packages(self, ecosystem):
158162
packages = set()
159163
for page in self.advisories[ecosystem]:
@@ -172,23 +176,25 @@ def process_response(self) -> List[Advisory]:
172176

173177
if self.process_name(ecosystem, name):
174178
ns, pkg_name = self.process_name(ecosystem, name)
175-
else:
176-
continue
177-
aff_range = adv["node"]["vulnerableVersionRange"]
178-
aff_vers, unaff_vers = self.categorize_versions(
179-
aff_range, self.version_api.get(name)
180-
)
181-
affected_purls = {
182-
PackageURL(name=pkg_name, namespace=ns,
183-
version=version, type=pkg_type)
184-
for version in aff_vers
185-
}
186-
187-
unaffected_purls = {
188-
PackageURL(name=pkg_name, namespace=ns,
189-
version=version, type=pkg_type)
190-
for version in unaff_vers
191-
}
179+
aff_range = adv["node"]["vulnerableVersionRange"]
180+
aff_vers, unaff_vers = self.categorize_versions(
181+
aff_range, self.version_api.get(name)
182+
)
183+
affected_purls = {
184+
PackageURL(name=pkg_name, namespace=ns,
185+
version=version, type=pkg_type)
186+
for version in aff_vers
187+
}
188+
189+
unaffected_purls = {
190+
PackageURL(name=pkg_name, namespace=ns,
191+
version=version, type=pkg_type)
192+
for version in unaff_vers
193+
}
194+
else :
195+
affected_purls = set()
196+
unaffected_purls = set()
197+
192198

193199
cve_ids = set()
194200
vuln_references = []

0 commit comments

Comments
 (0)