Skip to content

Commit 0aff3fd

Browse files
authored
fix(terraform): avoid data race on global getter.Getters in remote module resolver (#10843)
Signed-off-by: Arpit Jain <arpitjain099@gmail.com>
1 parent e68f3d2 commit 0aff3fd

1 file changed

Lines changed: 7 additions & 3 deletions

File tree

  • pkg/iac/scanners/terraform/parser/resolvers

pkg/iac/scanners/terraform/parser/resolvers/remote.go

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66
"io/fs"
7+
"maps"
78
"os"
89
"path/filepath"
910
"sync/atomic"
@@ -70,8 +71,11 @@ func (r *remoteResolver) download(ctx context.Context, opt Options, dst string)
7071
return err
7172
}
7273

73-
// Overwrite the file getter so that a file will be copied
74-
getter.Getters["file"] = &getter.FileGetter{Copy: true}
74+
// Use a copy of the default getters with the file getter overridden to
75+
// copy files, so that concurrent download calls don't write to the
76+
// package-global getter.Getters map. See #10832.
77+
getters := maps.Clone(getter.Getters)
78+
getters["file"] = &getter.FileGetter{Copy: true}
7579

7680
opt.Logger.Debug("Downloading module", log.String("source", opt.Source))
7781

@@ -81,7 +85,7 @@ func (r *remoteResolver) download(ctx context.Context, opt Options, dst string)
8185
Src: opt.Source,
8286
Dst: dst,
8387
Pwd: opt.WorkingDir,
84-
Getters: getter.Getters,
88+
Getters: getters,
8589
Mode: getter.ClientModeAny,
8690
}
8791

0 commit comments

Comments
 (0)