Skip to content

Commit c85b541

Browse files
committed
fix(test): include procfs flag in test binary
Signed-off-by: daemon1024 <[email protected]>
1 parent e5841ac commit c85b541

File tree

5 files changed

+18
-10
lines changed

5 files changed

+18
-10
lines changed

KubeArmor/core/containerdHandler.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"context"
99
"fmt"
1010
"os"
11+
"path/filepath"
1112
"strconv"
1213
"strings"
1314
"time"
@@ -193,13 +194,13 @@ func (ch *ContainerdHandler) GetContainerInfo(ctx context.Context, containerID s
193194

194195
pid := strconv.Itoa(int(taskRes.Processes[0].Pid))
195196

196-
if data, err := os.Readlink(cfg.GlobalCfg.ProcFsMount + "/" + pid + "/ns/pid"); err == nil {
197+
if data, err := os.Readlink(filepath.Join(cfg.GlobalCfg.ProcFsMount, pid, "/ns/pid")); err == nil {
197198
if _, err := fmt.Sscanf(data, "pid:[%d]\n", &container.PidNS); err != nil {
198199
kg.Warnf("Unable to get PidNS (%s, %s, %s)", containerID, pid, err.Error())
199200
}
200201
}
201202

202-
if data, err := os.Readlink(cfg.GlobalCfg.ProcFsMount + "/" + pid + "/ns/mnt"); err == nil {
203+
if data, err := os.Readlink(filepath.Join(cfg.GlobalCfg.ProcFsMount, pid, "/ns/mnt")); err == nil {
203204
if _, err := fmt.Sscanf(data, "mnt:[%d]\n", &container.MntNS); err != nil {
204205
kg.Warnf("Unable to get MntNS (%s, %s, %s)", containerID, pid, err.Error())
205206
}

KubeArmor/core/crioHandler.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"encoding/json"
99
"fmt"
1010
"os"
11+
"path/filepath"
1112
"strconv"
1213
"time"
1314

@@ -130,15 +131,15 @@ func (ch *CrioHandler) GetContainerInfo(ctx context.Context, containerID string,
130131

131132
pid := strconv.Itoa(containerInfo.Pid)
132133

133-
if data, err := os.Readlink(cfg.GlobalCfg.ProcFsMount + "/" + pid + "/ns/pid"); err == nil {
134+
if data, err := os.Readlink(filepath.Join(cfg.GlobalCfg.ProcFsMount, pid, "/ns/pid")); err == nil {
134135
if _, err := fmt.Sscanf(data, "pid:[%d]\n", &container.PidNS); err != nil {
135136
kg.Warnf("Unable to get PidNS (%s, %s, %s)", containerID, pid, err.Error())
136137
}
137138
} else {
138139
return container, err
139140
}
140141

141-
if data, err := os.Readlink(cfg.GlobalCfg.ProcFsMount + "/" + pid + "/ns/mnt"); err == nil {
142+
if data, err := os.Readlink(filepath.Join(cfg.GlobalCfg.ProcFsMount, pid, "/ns/mnt")); err == nil {
142143
if _, err := fmt.Sscanf(data, "mnt:[%d]\n", &container.MntNS); err != nil {
143144
kg.Warnf("Unable to get MntNS (%s, %s, %s)", containerID, pid, err.Error())
144145
}

KubeArmor/core/dockerHandler.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"errors"
99
"fmt"
1010
"os"
11+
"path/filepath"
1112
"slices"
1213
"strconv"
1314
"strings"
@@ -144,13 +145,13 @@ func (dh *DockerHandler) GetContainerInfo(containerID string, OwnerInfo map[stri
144145

145146
pid := strconv.Itoa(inspect.State.Pid)
146147

147-
if data, err := os.Readlink(cfg.GlobalCfg.ProcFsMount + "/" + pid + "/ns/pid"); err == nil {
148+
if data, err := os.Readlink(filepath.Join(cfg.GlobalCfg.ProcFsMount, pid, "/ns/pid")); err == nil {
148149
if _, err := fmt.Sscanf(data, "pid:[%d]\n", &container.PidNS); err != nil {
149150
kg.Warnf("Unable to get PidNS (%s, %s, %s)", containerID, pid, err.Error())
150151
}
151152
}
152153

153-
if data, err := os.Readlink(cfg.GlobalCfg.ProcFsMount + "/" + pid + "/ns/mnt"); err == nil {
154+
if data, err := os.Readlink(filepath.Join(cfg.GlobalCfg.ProcFsMount, pid, "/ns/mnt")); err == nil {
154155
if _, err := fmt.Sscanf(data, "mnt:[%d]\n", &container.MntNS); err != nil {
155156
kg.Warnf("Unable to get MntNS (%s, %s, %s)", containerID, pid, err.Error())
156157
}

KubeArmor/main_test.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ import (
1313

1414
var clusterPtr, gRPCPtr, logPathPtr *string
1515
var enableKubeArmorPolicyPtr, enableKubeArmorHostPolicyPtr, enableKubeArmorVMPtr, coverageTestPtr, enableK8sEnv, tlsEnabled *bool
16-
var defaultFilePosturePtr, defaultCapabilitiesPosturePtr, defaultNetworkPosturePtr, hostDefaultCapabilitiesPosturePtr, hostDefaultNetworkPosturePtr, hostDefaultFilePosturePtr *string
16+
var defaultFilePosturePtr, defaultCapabilitiesPosturePtr, defaultNetworkPosturePtr, hostDefaultCapabilitiesPosturePtr, hostDefaultNetworkPosturePtr, hostDefaultFilePosturePtr, procFsMountPtr *string
1717

1818
func init() {
1919
// options (string)
@@ -32,6 +32,8 @@ func init() {
3232
hostDefaultNetworkPosturePtr = flag.String("hostDefaultNetworkPosture", "block", "configuring default enforcement action in global network context {allow|audit|block}")
3333
hostDefaultCapabilitiesPosturePtr = flag.String("hostDefaultCapabilitiesPosture", "block", "configuring default enforcement action in global capability context {allow|audit|block}")
3434

35+
procFsMountPtr = flag.String("procfsMount", "/proc", "Path to the BPF filesystem to use for storing maps")
36+
3537
// options (boolean)
3638
enableKubeArmorPolicyPtr = flag.Bool("enableKubeArmorPolicy", true, "enabling KubeArmorPolicy")
3739
enableKubeArmorHostPolicyPtr = flag.Bool("enableKubeArmorHostPolicy", true, "enabling KubeArmorHostPolicy")
@@ -42,6 +44,7 @@ func init() {
4244

4345
// options (boolean)
4446
coverageTestPtr = flag.Bool("coverageTest", false, "enabling CoverageTest")
47+
4548
}
4649

4750
// TestMain - test to drive external testing coverage
@@ -64,6 +67,7 @@ func TestMain(t *testing.T) {
6467
fmt.Sprintf("-enableKubeArmorHostPolicy=%s", strconv.FormatBool(*enableKubeArmorHostPolicyPtr)),
6568
fmt.Sprintf("-coverageTest=%s", strconv.FormatBool(*coverageTestPtr)),
6669
fmt.Sprintf("-tlsEnabled=%s", strconv.FormatBool(*tlsEnabled)),
70+
fmt.Sprintf("-procfsMount=%s", *procFsMountPtr),
6771
}
6872

6973
t.Log("[INFO] Executed KubeArmor")

KubeArmor/monitor/processTree.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ package monitor
55

66
import (
77
"os"
8+
"path/filepath"
89
"strconv"
910
"strings"
1011
"sync"
@@ -231,7 +232,7 @@ func (mon *SystemMonitor) GetParentExecPath(containerID string, ctx SyscallConte
231232

232233
if readlink {
233234
// just in case that it couldn't still get the full path
234-
if data, err := os.Readlink(cfg.GlobalCfg.ProcFsMount + "/" + strconv.FormatUint(uint64(ctx.HostPPID), 10) + "/exe"); err == nil && data != "" && data != "/" {
235+
if data, err := os.Readlink(filepath.Join(cfg.GlobalCfg.ProcFsMount, strconv.FormatUint(uint64(ctx.HostPPID), 10), "/exe")); err == nil && data != "" && data != "/" {
235236
// // Store it in the ActiveHostPidMap so we don't need to read procfs again
236237
// // We don't call BuildPidNode Here cause that will put this into a cyclic function call loop
237238
// if pidMap, ok := ActiveHostPidMap[containerID]; ok {
@@ -276,7 +277,7 @@ func (mon *SystemMonitor) GetExecPath(containerID string, ctx SyscallContext, re
276277

277278
if readlink {
278279
// just in case that it couldn't still get the full path
279-
if data, err := os.Readlink(cfg.GlobalCfg.ProcFsMount + strconv.FormatUint(uint64(ctx.HostPID), 10) + "/exe"); err == nil && data != "" && data != "/" {
280+
if data, err := os.Readlink(filepath.Join(cfg.GlobalCfg.ProcFsMount, strconv.FormatUint(uint64(ctx.HostPID), 10), "/exe")); err == nil && data != "" && data != "/" {
280281
// // Store it in the ActiveHostPidMap so we don't need to read procfs again
281282
// if pidMap, ok := ActiveHostPidMap[containerID]; ok {
282283
// if node, ok := pidMap[ctx.HostPID]; ok {
@@ -318,7 +319,7 @@ func (mon *SystemMonitor) GetCommand(containerID string, ctx SyscallContext, rea
318319

319320
if readlink {
320321
// just in case that it couldn't still get the full path
321-
if data, err := os.Readlink(cfg.GlobalCfg.ProcFsMount + strconv.FormatUint(uint64(ctx.HostPID), 10) + "/exe"); err == nil && data != "" && data != "/" {
322+
if data, err := os.Readlink(filepath.Join(cfg.GlobalCfg.ProcFsMount, strconv.FormatUint(uint64(ctx.HostPID), 10), "/exe")); err == nil && data != "" && data != "/" {
322323
return data
323324
} else if err != nil {
324325
mon.Logger.Debugf("Could not read path from procfs due to %s", err.Error())

0 commit comments

Comments
 (0)