Skip to content

Commit 2aede6f

Browse files
author
mark
committed
Infinite loop fix
Signed-off-by: mark <mark@threatrix.io>
1 parent 14b814c commit 2aede6f

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

vulnerabilities/package_managers.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -660,8 +660,12 @@ def fetch(self, pkg: str) -> Iterable[PackageVersion]:
660660
url = f"https://proxy.golang.org/{escaped_pkg}/@v/list"
661661
response = get_response(url=url, content_type="text")
662662
if not response:
663-
escaped_pkg = self.trim_go_url_path(escaped_pkg)
663+
trimmed_escaped_pkg = self.trim_go_url_path(escaped_pkg)
664664
trimmed_pkg = self.trim_go_url_path(trimmed_pkg) or ""
665+
if trimmed_escaped_pkg == escaped_pkg:
666+
break
667+
668+
escaped_pkg = trimmed_escaped_pkg
665669
continue
666670

667671
break

vulnerabilities/tests/test_package_managers.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -300,6 +300,15 @@ def test_fetch(self, mock_fetcher):
300300
]
301301
assert results == expected
302302

303+
@mock.patch("vulnerabilities.package_managers.get_response")
304+
def test_fetch_with_responses_are_none(self, mock_fetcher):
305+
# we have many calls made to get_response
306+
responses = [None, None, None, None, None]
307+
mock_fetcher.side_effect = responses
308+
309+
results = list(GoproxyVersionAPI().fetch("github.com/FerretDB/FerretDB"))
310+
assert results == []
311+
303312

304313
class TestNugetVersionAPI:
305314
expected_versions = [

0 commit comments

Comments
 (0)