mirror of
https://github.com/opencontainers/runc.git
synced 2026-07-11 06:03:57 +08:00
libct/seccomp/patchpbf/test: fix for 32-bit
This test fails to compile on i386: > libcontainer/seccomp/patchbpf/enosys_linux_test.go:180:20: constant 3735928559 overflows int > libcontainer/seccomp/patchbpf/enosys_linux_test.go:204:19: constant 3735928559 overflows int > libcontainer/seccomp/patchbpf/enosys_linux_test.go:227:25: constant 3735928559 overflows int This is because golang.org/x/net/bpf returns an int from their emulated BPF VM implementation when they should really be returning uint32. Fix by switching to uint32 in the test code. Signed-off-by: Kir Kolyshkin <kolyshkin@gmail.com>
This commit is contained in:
committed by
Kir Kolyshkin
parent
b4cb54c2ea
commit
b142a70ece
@@ -159,7 +159,7 @@ func testEnosysStub(t *testing.T, defaultAction configs.Action, arches []string)
|
||||
type syscallTest struct {
|
||||
syscall string
|
||||
sysno libseccomp.ScmpSyscall
|
||||
expected int
|
||||
expected uint32
|
||||
}
|
||||
|
||||
scmpArch, err := libseccomp.GetArchFromString(arch)
|
||||
@@ -177,9 +177,9 @@ func testEnosysStub(t *testing.T, defaultAction configs.Action, arches []string)
|
||||
// Add explicit syscalls (whether they will return -ENOSYS
|
||||
// depends on the filter rules).
|
||||
for idx, syscall := range explicitSyscalls {
|
||||
expected := int(retFallthrough)
|
||||
expected := retFallthrough
|
||||
if idx >= enosysStart {
|
||||
expected = int(retErrnoEnosys)
|
||||
expected = retErrnoEnosys
|
||||
}
|
||||
sysno, err := libseccomp.GetSyscallFromNameByArch(syscall, scmpArch)
|
||||
if err != nil {
|
||||
@@ -201,7 +201,7 @@ func testEnosysStub(t *testing.T, defaultAction configs.Action, arches []string)
|
||||
syscallTests = append(syscallTests, syscallTest{
|
||||
sysno: sysno,
|
||||
syscall: syscall,
|
||||
expected: int(retFallthrough),
|
||||
expected: retFallthrough,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -216,7 +216,7 @@ func testEnosysStub(t *testing.T, defaultAction configs.Action, arches []string)
|
||||
syscallTests = append(syscallTests, syscallTest{
|
||||
sysno: sysno,
|
||||
syscall: fmt.Sprintf("syscall_%#x", sysno),
|
||||
expected: int(retErrnoEnosys),
|
||||
expected: retErrnoEnosys,
|
||||
})
|
||||
}
|
||||
|
||||
@@ -224,14 +224,17 @@ func testEnosysStub(t *testing.T, defaultAction configs.Action, arches []string)
|
||||
for _, test := range syscallTests {
|
||||
// Override the expected value in the two special cases.
|
||||
if !archSet[arch] || isAllowAction(defaultAction) {
|
||||
test.expected = int(retFallthrough)
|
||||
test.expected = retFallthrough
|
||||
}
|
||||
|
||||
payload := mockSyscallPayload(t, test.sysno, nativeArch, 0x1337, 0xF00BA5)
|
||||
ret, err := filter.Run(payload)
|
||||
// NOTE: golang.org/x/net/bpf returns int here rather
|
||||
// than uint32.
|
||||
rawRet, err := filter.Run(payload)
|
||||
if err != nil {
|
||||
t.Fatalf("error running filter: %v", err)
|
||||
}
|
||||
ret := uint32(rawRet)
|
||||
if ret != test.expected {
|
||||
t.Logf("mock filter for %v %v:", arches, allowedSyscalls)
|
||||
for idx, insn := range program {
|
||||
|
||||
Reference in New Issue
Block a user