summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar zak <e-zk@users.noreply.github.com>2022-12-22 00:17:33 +1000
committerLibravatar Anirudh Oppiliappan <x@icyphox.sh>2022-12-22 11:17:59 +0530
commit4aa8cbff320b669fc07f356409b05d6b1795c342 (patch)
tree71b02d6bc99ba805d728b28d70023573233ce7a4
parentd0f5d874c58abac60bd9145eb98c0305047c9d0f (diff)
downloadlegit-4aa8cbff320b669fc07f356409b05d6b1795c342.tar.gz
legit-4aa8cbff320b669fc07f356409b05d6b1795c342.tar.bz2
legit-4aa8cbff320b669fc07f356409b05d6b1795c342.zip
unveil: initial commit
Diffstat (limited to '')
-rw-r--r--go.mod2
-rw-r--r--main.go6
-rw-r--r--unveil.go32
-rw-r--r--unveil_stub.go18
4 files changed, 36 insertions, 22 deletions
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 <stdlib.h>
-#include <unistd.h>
-*/
-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))
+ return unix.Unveil(path, perms)
+}
+
+func UnveilBlock() error {
+ return unix.UnveilBlock()
+}
- rv, err := C.unveil(cpath, cperms)
- if rv != 0 {
- return fmt.Errorf("unveil(%s, %s) failure (%d)", path, perms, err)
+func UnveilPaths(paths []string, perms string) error {
+ for _, path := range paths {
+ err := Unveil(path, perms)
+ if err != nil {
+ return err
+ }
}
- return nil
+ 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
+}