From 7b553f586f4d8789de3a26d20fb0beecb08b52bf Mon Sep 17 00:00:00 2001 From: Fabricio Voznika Date: Sat, 15 Sep 2018 18:12:48 -0700 Subject: [PATCH] capability: Fix capHeader.pid type (#16) * Fix capHeader.pid type In C, int is 4 bytes in 32 and 64-bit systems. In Go, int is a 8 bytes in 64-bit systems. Before this fix, pid was being ignored because the kernel will always read 0 due to padding added between version and pid fields. * Update capability_linux.go --- capability/capability/capability_linux.go | 4 ++-- capability/capability/syscall_linux.go | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/capability/capability/capability_linux.go b/capability/capability/capability_linux.go index 68e79f7..1567dc8 100644 --- a/capability/capability/capability_linux.go +++ b/capability/capability/capability_linux.go @@ -103,12 +103,12 @@ func newPid(pid int) (c Capabilities, err error) { case linuxCapVer1: p := new(capsV1) p.hdr.version = capVers - p.hdr.pid = pid + p.hdr.pid = int32(pid) c = p case linuxCapVer2, linuxCapVer3: p := new(capsV3) p.hdr.version = capVers - p.hdr.pid = pid + p.hdr.pid = int32(pid) c = p default: err = errUnknownVers diff --git a/capability/capability/syscall_linux.go b/capability/capability/syscall_linux.go index eb71700..3d2bf69 100644 --- a/capability/capability/syscall_linux.go +++ b/capability/capability/syscall_linux.go @@ -13,7 +13,7 @@ import ( type capHeader struct { version uint32 - pid int + pid int32 } type capData struct {