Skip to content

Commit

Permalink
Merge pull request #155 from kolyshkin/faster-readcon
Browse files Browse the repository at this point in the history
readCon speedup
  • Loading branch information
rhatdan committed Sep 9, 2021
2 parents 6001286 + 52abbe8 commit 4a1acc5
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 8 deletions.
15 changes: 7 additions & 8 deletions go-selinux/selinux_linux.go
Expand Up @@ -274,12 +274,15 @@ func readCon(fpath string) (string, error) {
if err := isProcHandle(in); err != nil {
return "", err
}
return readConFd(in)
}

var retval string
if _, err := fmt.Fscanf(in, "%s", &retval); err != nil {
func readConFd(in *os.File) (string, error) {
data, err := ioutil.ReadAll(in)
if err != nil {
return "", err
}
return strings.Trim(retval, "\x00"), nil
return string(bytes.TrimSuffix(data, []byte{0})), nil
}

// classIndex returns the int index for an object class in the loaded policy,
Expand Down Expand Up @@ -664,11 +667,7 @@ func readWriteCon(fpath string, val string) (string, error) {
return "", err
}

var retval string
if _, err := fmt.Fscanf(f, "%s", &retval); err != nil {
return "", err
}
return strings.Trim(retval, "\x00"), nil
return readConFd(f)
}

// setExecLabel sets the SELinux label that the kernel will use for any programs
Expand Down
14 changes: 14 additions & 0 deletions go-selinux/selinux_linux_test.go
Expand Up @@ -521,3 +521,17 @@ func BenchmarkChcon(b *testing.B) {
}
}
}

func BenchmarkCurrentLabel(b *testing.B) {
var (
l string
err error
)
for n := 0; n < b.N; n++ {
l, err = CurrentLabel()
if err != nil {
b.Fatal(err)
}
}
b.Log(l)
}

0 comments on commit 4a1acc5

Please sign in to comment.