aboutsummaryrefslogtreecommitdiffhomepage
path: root/internal/linux/std.go
diff options
context:
space:
mode:
Diffstat (limited to 'internal/linux/std.go')
-rw-r--r--internal/linux/std.go10
1 files changed, 9 insertions, 1 deletions
diff --git a/internal/linux/std.go b/internal/linux/std.go
index 219997ee..a82fff26 100644
--- a/internal/linux/std.go
+++ b/internal/linux/std.go
@@ -1,6 +1,7 @@
package linux
import (
+ "errors"
"io"
"io/fs"
"os"
@@ -8,6 +9,7 @@ import (
"os/user"
"strconv"
"sync"
+ "syscall"
"git.gensokyo.uk/security/fortify/internal"
"git.gensokyo.uk/security/fortify/internal/fmsg"
@@ -79,9 +81,15 @@ func (s *Std) Uid(aid int) (int, error) {
cmd.Stderr = os.Stderr // pass through fatal messages
cmd.Env = []string{"FORTIFY_APP_ID=" + strconv.Itoa(aid)}
cmd.Dir = "/"
- var p []byte
+ var (
+ p []byte
+ exitError *exec.ExitError
+ )
+
if p, u.err = cmd.Output(); u.err == nil {
u.uid, u.err = strconv.Atoi(string(p))
+ } else if errors.As(u.err, &exitError) && exitError != nil && exitError.ExitCode() == 1 {
+ u.err = syscall.EACCES
}
return u.uid, u.err
}