From e28e79a648160ddf3c932e6c97cd2f72c38981b0 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 1 Oct 2026 12:39:42 +0000 Subject: [PATCH] fix(acme): avoid nilnil lint finding Co-authored-by: techknowlogick <164197+techknowlogick@users.noreply.github.com> --- cmd/web_acme.go | 14 +++++++++----- cmd/web_acme_test.go | 12 +++++++----- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/cmd/web_acme.go b/cmd/web_acme.go index db23e3acdf5..39050710e31 100644 --- a/cmd/web_acme.go +++ b/cmd/web_acme.go @@ -24,14 +24,14 @@ import ( "github.com/mholt/acmez/v3/acme" ) -func acmeExternalAccountBinding() (*acme.EAB, error) { +func acmeExternalAccountBinding() (acme.EAB, bool, error) { if setting.AcmeEABKID == "" && setting.AcmeEABHMAC == "" { - return nil, nil + return acme.EAB{}, false, nil } if setting.AcmeEABKID == "" || setting.AcmeEABHMAC == "" { - return nil, errors.New("both ACME_EAB_KID and ACME_EAB_HMAC must be set") + return acme.EAB{}, false, errors.New("both ACME_EAB_KID and ACME_EAB_HMAC must be set") } - return &acme.EAB{KeyID: setting.AcmeEABKID, MACKey: setting.AcmeEABHMAC}, nil + return acme.EAB{KeyID: setting.AcmeEABKID, MACKey: setting.AcmeEABHMAC}, true, nil } func getCARoot(path string) (*x509.CertPool, error) { @@ -77,10 +77,14 @@ func runACME(listenAddr string, m http.Handler) error { log.Warn("Failed to parse CA Root certificate, using default CA trust: %v", err) } } - externalAccount, err := acmeExternalAccountBinding() + externalAccountBinding, hasExternalAccount, err := acmeExternalAccountBinding() if err != nil { return err } + var externalAccount *acme.EAB + if hasExternalAccount { + externalAccount = &externalAccountBinding + } // FIXME: this path is not right, it uses "AppWorkPath" incorrectly, and writes the data into "AppWorkPath/https" // Ideally it should migrate to AppDataPath write to "AppDataPath/https" // And one more thing, no idea why we should set the global default variables here diff --git a/cmd/web_acme_test.go b/cmd/web_acme_test.go index bceb15b63ff..7123de97eca 100644 --- a/cmd/web_acme_test.go +++ b/cmd/web_acme_test.go @@ -17,16 +17,18 @@ func TestAcmeExternalAccountBinding(t *testing.T) { t.Cleanup(test.MockVariableValue(&setting.AcmeEABKID, "")) t.Cleanup(test.MockVariableValue(&setting.AcmeEABHMAC, "")) - binding, err := acmeExternalAccountBinding() + binding, configured, err := acmeExternalAccountBinding() assert.NoError(t, err) - assert.Nil(t, binding) + assert.False(t, configured) + assert.Empty(t, binding) setting.AcmeEABKID = "kid" - _, err = acmeExternalAccountBinding() + _, _, err = acmeExternalAccountBinding() assert.ErrorContains(t, err, "both ACME_EAB_KID and ACME_EAB_HMAC must be set") setting.AcmeEABHMAC = "hmac" - binding, err = acmeExternalAccountBinding() + binding, configured, err = acmeExternalAccountBinding() assert.NoError(t, err) - assert.Equal(t, &acme.EAB{KeyID: "kid", MACKey: "hmac"}, binding) + assert.True(t, configured) + assert.Equal(t, acme.EAB{KeyID: "kid", MACKey: "hmac"}, binding) }