From 4aa8cbff320b669fc07f356409b05d6b1795c342 Mon Sep 17 00:00:00 2001 From: zak Date: Thu, 22 Dec 2022 00:17:33 +1000 Subject: [PATCH] unveil: initial commit --- go.mod | 2 +- main.go | 6 +++--- unveil.go | 36 ++++++++++++++++-------------------- unveil_stub.go | 18 ++++++++++++++++++ 4 files changed, 38 insertions(+), 24 deletions(-) create mode 100644 unveil_stub.go diff --git a/go.mod b/go.mod index c16525e..e27c6ad 100644 --- a/go.mod +++ b/go.mod @@ -8,6 +8,7 @@ require ( github.com/dustin/go-humanize v1.0.0 github.com/go-git/go-git/v5 v5.5.1 github.com/sosedoff/gitkit v0.3.0 + golang.org/x/sys v0.3.0 gopkg.in/yaml.v3 v3.0.0 ) @@ -30,7 +31,6 @@ require ( golang.org/x/crypto v0.4.0 // indirect golang.org/x/mod v0.7.0 // indirect golang.org/x/net v0.4.0 // indirect - golang.org/x/sys v0.3.0 // indirect golang.org/x/tools v0.4.0 // indirect gopkg.in/warnings.v0 v0.1.2 // indirect ) diff --git a/main.go b/main.go index 942b9de..2bccd33 100644 --- a/main.go +++ b/main.go @@ -20,9 +20,9 @@ func main() { log.Fatal(err) } - // for path := range []string{c.Dirs.Static, c.Repo.ScanPath, c.Dirs.Templates} { - // Unveil(path, "r") - // } + if err = UnveilPaths([]string{c.Dirs.Static, c.Repo.ScanPath, c.Dirs.Templates}, "r"); err != nil { + log.Fatal(err) + } mux := routes.Handlers(c) addr := fmt.Sprintf("%s:%d", c.Server.Host, c.Server.Port) diff --git a/unveil.go b/unveil.go index 242ce14..99b6629 100644 --- a/unveil.go +++ b/unveil.go @@ -1,30 +1,26 @@ //go:build openbsd // +build openbsd -// Doesn't do anything yet. - package main -/* -#include -#include -*/ -import "C" - import ( - "fmt" - "unsafe" + "golang.org/x/sys/unix" ) func Unveil(path string, perms string) error { - cpath := C.CString(path) - defer C.free(unsafe.Pointer(cpath)) - cperms := C.CString(perms) - defer C.free(unsafe.Pointer(cperms)) - - rv, err := C.unveil(cpath, cperms) - if rv != 0 { - return fmt.Errorf("unveil(%s, %s) failure (%d)", path, perms, err) - } - return nil + return unix.Unveil(path, perms) +} + +func UnveilBlock() error { + return unix.UnveilBlock() +} + +func UnveilPaths(paths []string, perms string) error { + for _, path := range paths { + err := Unveil(path, perms) + if err != nil { + return err + } + } + return UnveilBlock() } diff --git a/unveil_stub.go b/unveil_stub.go new file mode 100644 index 0000000..dc72a7d --- /dev/null +++ b/unveil_stub.go @@ -0,0 +1,18 @@ +//go:build !openbsd +// +build !openbsd + +// Stub functions for GOOS that don't support unix.Unveil() + +package main + +func Unveil(path string, perms string) error { + return nil +} + +func UnveilBlock() error { + return nil +} + +func UnveilPaths(paths []string, perms string) error { + return nil +}