From 0dfcf8cb81daa80aa751a5a40c243e64ee030929 Mon Sep 17 00:00:00 2001 From: Andinus Date: Wed, 8 Apr 2020 01:32:14 +0530 Subject: Add wrapper around single path Unveil command --- path.go | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 path.go diff --git a/path.go b/path.go new file mode 100644 index 0000000..8f3dcc2 --- /dev/null +++ b/path.go @@ -0,0 +1,26 @@ +package lynx + +import "golang.org/x/sys/unix" + +// UnveilPath takes a path, permission & unveils it, returning an +// error if unveil fails. "no such file or directory" error is +// ignored. +func UnveilPath(path string, flags string) (err error) { + err = unix.Unveil(path, flags) + + // "no such file or directory" error is ignored. + if err != nil && err.Error() != "no such file or directory" { + // Better error message could be returned like + // one that includes the path on which unveil + // failed. + return err + } + // Returning nil because err can be "no such file or + // directory" which needs to be ignored. + return nil +} + +// UnveilPathStrict is just a wrapper around unix.Unveil. +func UnveilPathStrict(path string, flags string) error { + return unix.Unveil(path, flags) +} -- cgit 1.4.1-2-gfad0