Skip to content

Commit ecc7bc8

Browse files
- Modified fallback mechanism of container engine location for IAC scan
1 parent e8dc477 commit ecc7bc8

File tree

2 files changed

+14
-18
lines changed

2 files changed

+14
-18
lines changed

internal/services/realtimeengine/iacrealtime/container-manager.go

Lines changed: 7 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
package iacrealtime
22

33
import (
4-
"github.com/google/uuid"
5-
"os/exec"
6-
"strings"
7-
84
"github.com/checkmarx/ast-cli/internal/commands/util"
95
commonParams "github.com/checkmarx/ast-cli/internal/params"
6+
"github.com/google/uuid"
107
"github.com/spf13/viper"
8+
"os/exec"
119
)
1210

1311
// IContainerManager interface for container operations
@@ -31,6 +29,10 @@ func (dm *ContainerManager) GenerateContainerID() string {
3129
}
3230

3331
func (dm *ContainerManager) RunKicsContainer(engine, volumeMap string) error {
32+
engine, err := engineNameResolution(engine)
33+
if err != nil {
34+
return err
35+
}
3436
args := []string{
3537
"run", "--rm",
3638
"-v", volumeMap,
@@ -41,18 +43,7 @@ func (dm *ContainerManager) RunKicsContainer(engine, volumeMap string) error {
4143
"-o", ContainerPath,
4244
"--report-formats", ContainerFormat,
4345
}
46+
_, err = exec.Command(engine, args...).CombinedOutput()
4447

45-
_, err := exec.Command(engine, args...).CombinedOutput()
46-
47-
var msg string
48-
if err != nil {
49-
msg = err.Error()
50-
if strings.Contains(msg, util.InvalidEngineError) {
51-
enginePath, err := checkEnginePresentInPath(engine)
52-
if err != nil {
53-
_, err = exec.Command(enginePath, args...).CombinedOutput()
54-
}
55-
}
56-
}
5748
return err
5849
}

internal/services/realtimeengine/iacrealtime/iac-realtime.go

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"github.com/checkmarx/ast-cli/internal/services/realtimeengine"
88
"github.com/checkmarx/ast-cli/internal/wrappers"
99
"os"
10+
"os/exec"
1011
"path/filepath"
1112
)
1213

@@ -137,11 +138,15 @@ func (svc *IacRealtimeService) validateFilePath(filePath string) error {
137138
return nil
138139
}
139140

140-
func checkEnginePresentInPath(engineName string) (string, error) {
141+
func engineNameResolution(engineName string) (string, error) {
142+
if _, err := exec.LookPath(engineName); err == nil {
143+
return engineName, nil
144+
}
145+
141146
fallbackPath := filepath.Join("/usr/local/bin", engineName)
142147
info, err := os.Stat(fallbackPath)
143148
if err == nil && !info.IsDir() {
144149
return fallbackPath, nil
145150
}
146-
return "", fmt.Errorf(engineName + " not found in PATH or /usr/local/bin")
151+
return "", fmt.Errorf(engineName + " not found in PATH or in /usr/local/bin")
147152
}

0 commit comments

Comments
 (0)