Skip to content

Commit 9c794c0

Browse files
authored
fix(misconf): do not use semver for parsing tf module versions (aquasecurity#6614)
1 parent 14c1024 commit 9c794c0

File tree

2 files changed

+27
-4
lines changed

2 files changed

+27
-4
lines changed

pkg/iac/scanners/terraform/parser/parser_integration_test.go

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,3 +49,26 @@ module "registry" {
4949
require.NoError(t, err)
5050
require.Len(t, modules, 2)
5151
}
52+
53+
func Test_ModuleWithPessimisticVersionConstraint(t *testing.T) {
54+
if testing.Short() {
55+
t.Skip("skipping integration test in short mode")
56+
}
57+
fs := testutil.CreateFS(t, map[string]string{
58+
"code/test.tf": `
59+
module "registry" {
60+
source = "registry.terraform.io/terraform-aws-modules/s3-bucket/aws"
61+
bucket = "my-s3-bucket"
62+
version = "~> 3.1"
63+
}
64+
`,
65+
})
66+
67+
parser := New(fs, "", OptionStopOnHCLError(true), OptionWithSkipCachedModules(true))
68+
if err := parser.ParseFS(context.TODO(), "code"); err != nil {
69+
t.Fatal(err)
70+
}
71+
modules, _, err := parser.EvaluateAll(context.TODO())
72+
require.NoError(t, err)
73+
require.Len(t, modules, 2)
74+
}

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

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313

1414
"golang.org/x/net/idna"
1515

16-
"github.com/aquasecurity/go-version/pkg/semver"
16+
"github.com/aquasecurity/go-version/pkg/version"
1717
)
1818

1919
type registryResolver struct {
@@ -167,13 +167,13 @@ func resolveVersion(input string, versions moduleVersions) (string, error) {
167167
return "", fmt.Errorf("no available versions for module")
168168
}
169169

170-
constraints, err := semver.NewConstraints(input)
170+
constraints, err := version.NewConstraints(input)
171171
if err != nil {
172172
return "", err
173173
}
174-
var realVersions semver.Collection
174+
var realVersions version.Collection
175175
for _, rawVersion := range versions.Modules[0].Versions {
176-
realVersion, err := semver.Parse(rawVersion.Version)
176+
realVersion, err := version.Parse(rawVersion.Version)
177177
if err != nil {
178178
continue
179179
}

0 commit comments

Comments
 (0)