From abc8ff3a5f04af9a73016470eb8943ad3c9f5338 Mon Sep 17 00:00:00 2001 From: Cody Soyland Date: Tue, 17 Sep 2024 17:48:12 -0400 Subject: [PATCH] Fix shadowed trustedroot (#178) * Fix shadowed variable bug This code caused the singleton `trustedRoot` to be returned as nil on subsequent calls. The singleton was shadowed when the variable was redeclared in the `if` block. Signed-off-by: Cody Soyland * Remove unused singleton `singletonRootError` was never returned without being overwritten, so it was essentially unused. I think it's wise to always retry the TUF call on future invocations in case of network errors. Signed-off-by: Cody Soyland --------- Signed-off-by: Cody Soyland --- pkg/tuf/repo.go | 18 +++++++----------- 1 file changed, 7 insertions(+), 11 deletions(-) diff --git a/pkg/tuf/repo.go b/pkg/tuf/repo.go index 1980f96c..eb957377 100644 --- a/pkg/tuf/repo.go +++ b/pkg/tuf/repo.go @@ -299,10 +299,9 @@ func ClientFromRemote(_ context.Context, mirror string, rootJSON []byte, targets } var ( - mu sync.RWMutex - singletonRootError error - timestamp time.Time - trustedRoot *root.TrustedRoot + mu sync.RWMutex + timestamp time.Time + trustedRoot *root.TrustedRoot ) // GetTrustedRoot returns the trusted root for the TUF repository. @@ -317,19 +316,16 @@ func GetTrustedRoot(ctx context.Context) (*root.TrustedRoot, error) { tufClient, err := tuf.NewFromEnv(context.Background()) if err != nil { - singletonRootError = fmt.Errorf("initializing tuf: %w", err) - return nil, singletonRootError + return nil, fmt.Errorf("initializing tuf: %w", err) } // TODO: add support for custom trusted root path targetBytes, err := tufClient.GetTarget("trusted_root.json") if err != nil { - singletonRootError = fmt.Errorf("error getting targets: %w", err) - return nil, singletonRootError + return nil, fmt.Errorf("error getting targets: %w", err) } - trustedRoot, err := root.NewTrustedRootFromJSON(targetBytes) + trustedRoot, err = root.NewTrustedRootFromJSON(targetBytes) if err != nil { - singletonRootError = fmt.Errorf("error creating trusted root: %w", err) - return nil, singletonRootError + return nil, fmt.Errorf("error creating trusted root: %w", err) } timestamp = now