From 514bb06748c5b4c714227d520c155f8318e0678e Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Wed, 21 May 2025 09:54:56 +0200 Subject: [PATCH 1/3] fix: prevent panic when *http.Response is nil Signed-off-by: Danny Kopping --- remote_fetch.go | 3 +++ remote_fetch_test.go | 6 ++++++ 2 files changed, 9 insertions(+) diff --git a/remote_fetch.go b/remote_fetch.go index 1aa1e84..d4f00f5 100644 --- a/remote_fetch.go +++ b/remote_fetch.go @@ -68,6 +68,9 @@ func defaultRemoteFetchStrategy(remoteFetchHost string, versionStrategy VersionS func closeBody(resp *http.Response) func() { return func() { + if resp == nil { + return + } if err := resp.Body.Close(); err != nil { log.Fatal(err) } diff --git a/remote_fetch_test.go b/remote_fetch_test.go index 9e6dcfb..2b4a76b 100644 --- a/remote_fetch_test.go +++ b/remote_fetch_test.go @@ -417,3 +417,9 @@ func Test_defaultRemoteFetchStrategy_whenContentLengthNotSet(t *testing.T) { assert.NoError(t, err) assert.FileExists(t, cacheLocation) } + +func Test_closeBody_NilResponse(t *testing.T) { + assert.NotPanics(t, func() { + closeBody(nil)() + }) +} From 5cb2f9e3d1ef012208659a8768c1e492b1e5a64f Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Wed, 21 May 2025 10:17:49 +0200 Subject: [PATCH 2/3] fix: add error handling for sha256 download Signed-off-by: Danny Kopping --- remote_fetch.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/remote_fetch.go b/remote_fetch.go index d4f00f5..7d74eaf 100644 --- a/remote_fetch.go +++ b/remote_fetch.go @@ -50,7 +50,9 @@ func defaultRemoteFetchStrategy(remoteFetchHost string, versionStrategy VersionS shaDownloadURL := fmt.Sprintf("%s.sha256", jarDownloadURL) shaDownloadResponse, err := http.Get(shaDownloadURL) - + if err != nil { + return fmt.Errorf("download sha256 from %s failed: %w", shaDownloadURL, err) + } defer closeBody(shaDownloadResponse)() if err == nil && shaDownloadResponse.StatusCode == http.StatusOK { From e23885bf89f22571beec88eb5ade43db5e8835d9 Mon Sep 17 00:00:00 2001 From: Danny Kopping Date: Wed, 21 May 2025 10:36:16 +0200 Subject: [PATCH 3/3] fix: check body nilness as well Signed-off-by: Danny Kopping --- remote_fetch.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/remote_fetch.go b/remote_fetch.go index 7d74eaf..bc95756 100644 --- a/remote_fetch.go +++ b/remote_fetch.go @@ -70,7 +70,7 @@ func defaultRemoteFetchStrategy(remoteFetchHost string, versionStrategy VersionS func closeBody(resp *http.Response) func() { return func() { - if resp == nil { + if resp == nil || resp.Body == nil { return } if err := resp.Body.Close(); err != nil {