Skip to content

Commit 7b8caf9

Browse files
Containers bugs fixes (AST-124328) (#1373)
* prefix bug fixed * version upgrade * vendor/tidy
1 parent f95b4fc commit 7b8caf9

File tree

4 files changed

+34
-9
lines changed

4 files changed

+34
-9
lines changed

go.mod

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ module github.com/checkmarx/ast-cli
33
go 1.24.11
44

55
require (
6-
github.com/Checkmarx/containers-resolver v1.0.27
6+
github.com/Checkmarx/containers-resolver v1.0.28
77
github.com/Checkmarx/containers-types v1.0.9
88
github.com/Checkmarx/gen-ai-prompts v0.0.0-20240807143411-708ceec12b63
99
github.com/Checkmarx/gen-ai-wrapper v1.0.3
@@ -48,8 +48,8 @@ require (
4848
github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c // indirect
4949
github.com/BobuSumisu/aho-corasick v1.0.3 // indirect
5050
github.com/BurntSushi/toml v1.5.0 // indirect
51-
github.com/Checkmarx/containers-images-extractor v1.0.20
52-
github.com/Checkmarx/containers-syft-packages-extractor v1.0.22 // indirect
51+
github.com/Checkmarx/containers-images-extractor v1.0.21
52+
github.com/Checkmarx/containers-syft-packages-extractor v1.0.23 // indirect
5353
github.com/CycloneDX/cyclonedx-go v0.9.2 // indirect
5454
github.com/DataDog/zstd v1.5.6 // indirect
5555
github.com/Masterminds/goutils v1.1.1 // indirect

go.sum

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,12 @@ github.com/BurntSushi/toml v0.4.1/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbi
6565
github.com/BurntSushi/toml v1.5.0 h1:W5quZX/G/csjUnuI8SUYlsHs9M38FC7znL0lIO+DvMg=
6666
github.com/BurntSushi/toml v1.5.0/go.mod h1:ukJfTF/6rtPPRCnwkur4qwRxa8vTRFBF0uk2lLoLwho=
6767
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
68-
github.com/Checkmarx/containers-images-extractor v1.0.20 h1:PGTtBMsjF77HrTtnmzzVGywFkuUtXfc/PBo46kMYORw=
69-
github.com/Checkmarx/containers-images-extractor v1.0.20/go.mod h1:HyzVb8TtTDf56hGlSakalPXtzjJ6VhTYe9fmAcOS+V8=
70-
github.com/Checkmarx/containers-resolver v1.0.27 h1:fEZkgQR+PLyIOunLRQAzofUX97I9qKGG9gAoKNI4ajw=
71-
github.com/Checkmarx/containers-resolver v1.0.27/go.mod h1:zxQja33k9SvDXG7eWq03U8WxkHIu/XchzjXsoKfhDFY=
72-
github.com/Checkmarx/containers-syft-packages-extractor v1.0.22 h1:5zzTrAgKOiqFvAwSS0DRmWyWuKK66jXj54wc8xroObQ=
73-
github.com/Checkmarx/containers-syft-packages-extractor v1.0.22/go.mod h1:OPGYISPnKtVFl2mZrClErv83ZLjUPKjdQQsXLmx++oY=
68+
github.com/Checkmarx/containers-images-extractor v1.0.21 h1:SEo4FyxUZnOkZnHqdpqDLcztHj/1IyEkvAnlTNBsNOA=
69+
github.com/Checkmarx/containers-images-extractor v1.0.21/go.mod h1:HyzVb8TtTDf56hGlSakalPXtzjJ6VhTYe9fmAcOS+V8=
70+
github.com/Checkmarx/containers-resolver v1.0.28 h1:FikNmHIAYqJ1G1qHixASDUjJirl+Dp635TuMYq/RfUY=
71+
github.com/Checkmarx/containers-resolver v1.0.28/go.mod h1:X6KwE/vFIDlgyBZKnkhRGitt65hWCZp0sdvgNTRyvSw=
72+
github.com/Checkmarx/containers-syft-packages-extractor v1.0.23 h1:qP4OBlCVF6BbOO0gzcoOzAtfdx7+M1kU3OsY2xBvy8E=
73+
github.com/Checkmarx/containers-syft-packages-extractor v1.0.23/go.mod h1:OPGYISPnKtVFl2mZrClErv83ZLjUPKjdQQsXLmx++oY=
7474
github.com/Checkmarx/containers-types v1.0.9 h1:LbHDj9LZ0x3f28wDx398WC19sw0U0EfEewHMLStBwvs=
7575
github.com/Checkmarx/containers-types v1.0.9/go.mod h1:KR0w8XCosq3+6jRCfQrH7i//Nj2u11qaUJM62CREFZA=
7676
github.com/Checkmarx/gen-ai-prompts v0.0.0-20240807143411-708ceec12b63 h1:SCuTcE+CFvgjbIxUNL8rsdB2sAhfuNx85HvxImKta3g=

internal/commands/scan.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3560,6 +3560,14 @@ func validateContainerImageFormat(containerImage string) error {
35603560
return validatePrefixedContainerImage(containerImage, getPrefixFromInput(containerImage, knownSources))
35613561
}
35623562

3563+
// Check if this looks like an invalid prefix attempt (e.g., "invalid-prefix:file.tar")
3564+
// If the "tag" ends with .tar and the "image name" looks like a simple prefix (no / or .)
3565+
// then the user likely intended to use a prefix format but used an unknown prefix
3566+
lowerTag := strings.ToLower(imageTag)
3567+
if strings.HasSuffix(lowerTag, ".tar") && !strings.Contains(imageName, "/") && !strings.Contains(imageName, ".") {
3568+
return errors.Errorf("Invalid value for --container-images flag. Unknown prefix '%s:'. Supported prefixes are: docker:, podman:, containerd:, registry:, docker-archive:, oci-archive:, oci-dir:, file:", imageName)
3569+
}
3570+
35633571
return nil // Valid image:tag format
35643572
}
35653573

internal/commands/scan_test.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2448,6 +2448,23 @@ func TestValidateContainerImageFormat_Comprehensive(t *testing.T) {
24482448
expectedError: "Invalid value for --container-images flag. The 'dir:' prefix is not supported",
24492449
},
24502450

2451+
// ==================== Unknown Prefix Tests ====================
2452+
{
2453+
name: "Invalid - unknown prefix with tar file",
2454+
containerImage: "invalid-prefix:test-image.tar",
2455+
expectedError: "Invalid value for --container-images flag. Unknown prefix 'invalid-prefix:'",
2456+
},
2457+
{
2458+
name: "Invalid - typo in prefix (dcoker)",
2459+
containerImage: "dcoker:my-image.tar",
2460+
expectedError: "Invalid value for --container-images flag. Unknown prefix 'dcoker:'",
2461+
},
2462+
{
2463+
name: "Invalid - custom prefix with tar",
2464+
containerImage: "myprefix:archive.tar",
2465+
expectedError: "Invalid value for --container-images flag. Unknown prefix 'myprefix:'",
2466+
},
2467+
24512468
// ==================== Edge Cases ====================
24522469
{
24532470
name: "Complex registry with multiple colons",

0 commit comments

Comments
 (0)