From 5745475dfe2c9cc166cfb279cc3585b2f4e57560 Mon Sep 17 00:00:00 2001
From: Paul Abel
Date: Tue, 27 Feb 2024 15:21:38 +0000
Subject: [PATCH 1/3] refactor defer to handle errors
---
internal/nginx/manager.go | 7 +++++--
internal/nginx/utils.go | 8 ++++++--
internal/nginx/verify.go | 9 +++++++--
3 files changed, 18 insertions(+), 6 deletions(-)
diff --git a/internal/nginx/manager.go b/internal/nginx/manager.go
index f440386ef5d..4efe5ca2f0b 100644
--- a/internal/nginx/manager.go
+++ b/internal/nginx/manager.go
@@ -456,13 +456,16 @@ func verifyConfigVersion(httpClient *http.Client, configVersion int, timeout tim
if err != nil {
return fmt.Errorf("error doing request: %w", err)
}
- defer resp.Body.Close()
+ err = nil
+ defer func() {
+ err = resp.Body.Close()
+ }()
if resp.StatusCode != http.StatusOK {
return fmt.Errorf("API returned non-success status: %v", resp.StatusCode)
}
- return nil
+ return err
}
// SetOpenTracing sets the value of OpenTracing for the Manager
diff --git a/internal/nginx/utils.go b/internal/nginx/utils.go
index 682db8ca151..3254d14c5f4 100644
--- a/internal/nginx/utils.go
+++ b/internal/nginx/utils.go
@@ -39,14 +39,18 @@ func createFileAndWrite(name string, b []byte) error {
return fmt.Errorf("failed to open %v: %w", name, err)
}
- defer w.Close()
+ defer func() {
+ if tempErr := w.Close(); tempErr != nil {
+ err = tempErr
+ }
+ }()
_, err = w.Write(b)
if err != nil {
return fmt.Errorf("failed to write to %v: %w", name, err)
}
- return nil
+ return err
}
func createFileAndWriteAtomically(filename string, tempPath string, mode os.FileMode, content []byte) {
diff --git a/internal/nginx/verify.go b/internal/nginx/verify.go
index ffb2d608383..68c94386a2b 100644
--- a/internal/nginx/verify.go
+++ b/internal/nginx/verify.go
@@ -49,7 +49,12 @@ func (c *verifyClient) GetConfigVersion() (int, error) {
if err != nil {
return 0, fmt.Errorf("error getting client: %w", err)
}
- defer resp.Body.Close()
+ err = nil
+ defer func() {
+ if tempErr := resp.Body.Close(); tempErr != nil {
+ err = tempErr
+ }
+ }()
if resp.StatusCode != http.StatusOK {
return 0, fmt.Errorf("non-200 response: %v", resp.StatusCode)
@@ -63,7 +68,7 @@ func (c *verifyClient) GetConfigVersion() (int, error) {
if err != nil {
return 0, fmt.Errorf("error converting string to int: %w", err)
}
- return v, nil
+ return v, err
}
// WaitForCorrectVersion calls the config version endpoint until it gets the expectedVersion,
From 425f68f201e8a943a2aeff403ce9c231e5ba98e4 Mon Sep 17 00:00:00 2001
From: Paul Abel
Date: Tue, 27 Feb 2024 15:26:06 +0000
Subject: [PATCH 2/3] address G204: Subprocess launched with variable
---
internal/nginx/manager.go | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/internal/nginx/manager.go b/internal/nginx/manager.go
index 4efe5ca2f0b..ce7c68f7274 100644
--- a/internal/nginx/manager.go
+++ b/internal/nginx/manager.go
@@ -342,7 +342,7 @@ func (lm *LocalManager) Quit() {
// Version returns NGINX version
func (lm *LocalManager) Version() Version {
binaryFilename := getBinaryFileName(lm.debug)
- out, err := exec.Command(binaryFilename, "-v").CombinedOutput()
+ out, err := exec.Command(binaryFilename, "-v").CombinedOutput() //nolint:gosec // G204: Subprocess launched with variable - false positive, variable resolves to a const
if err != nil {
glog.Fatalf("Failed to get nginx version: %v", err)
}
@@ -484,7 +484,7 @@ func (lm *LocalManager) AppProtectPluginStart(appDone chan error, logLevel strin
glog.V(3).Info("Starting AppProtect Plugin")
startupParams := strings.Fields(appPluginParams)
- cmd := exec.Command(appProtectPluginStartCmd, startupParams...)
+ cmd := exec.Command(appProtectPluginStartCmd, startupParams...) //nolint:gosec // G204: Subprocess launched with variable - false positive, variable resolves to a const
cmd.Stdout = os.Stdout
cmd.Stderr = os.Stdout
From fdb14f56fe17fb907b39b44e538518969eb60f29 Mon Sep 17 00:00:00 2001
From: Paul Abel
Date: Tue, 27 Feb 2024 17:27:43 +0000
Subject: [PATCH 3/3] remove unused function
---
pkg/apis/configuration/validation/virtualserver_test.go | 4 ----
1 file changed, 4 deletions(-)
diff --git a/pkg/apis/configuration/validation/virtualserver_test.go b/pkg/apis/configuration/validation/virtualserver_test.go
index 783cd00fee3..8992d3cf5f8 100644
--- a/pkg/apis/configuration/validation/virtualserver_test.go
+++ b/pkg/apis/configuration/validation/virtualserver_test.go
@@ -119,10 +119,6 @@ func makeVirtualServer() v1.VirtualServer {
}
}
-func createPointerFromString(s string) *string {
- return &s
-}
-
func TestValidateFailsOnMissingBackupPort(t *testing.T) {
t.Parallel()