diff options
| author | Joe Richey <joerichey@google.com> | 2017-03-02 10:38:33 -0800 |
|---|---|---|
| committer | Joe Richey joerichey@google.com <joerichey@google.com> | 2017-05-02 13:39:18 -0700 |
| commit | a683ab55245aa44ada5059f8e9816adbd94198ff (patch) | |
| tree | 13b966a777803e1b2a870b89219c3440259e9ffb /util/errors.go | |
| parent | 06e86bde8886aca3e1cd8cbc948cff7a103f97ab (diff) | |
metadata: get and set policies from go
This commit adds in the ability to get and set policy data from go using
the GetPolicy and SetPolicy functions. This is done via a patch of the
x/sys/unix package that exposes the filesystem encryption structures.
Note that not all the fields of the PolicyData protocol buffer are
needed to get and set policies. The wrapped_policy_keys are not used and
will be written and read by other components of fscrypt.
To run the policy tests, the environment variable BASE_TEST_DIR must be
set to a directory for testing on a filesystem that supports encryption.
Change-Id: I13b1d983356845f3ffc1945cedf53234218f32e5
Diffstat (limited to 'util/errors.go')
| -rw-r--r-- | util/errors.go | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/util/errors.go b/util/errors.go index aafeadd..bd63ac8 100644 --- a/util/errors.go +++ b/util/errors.go @@ -22,6 +22,7 @@ package util import ( "fmt" "log" + "os" ) // InvalidInputF creates an error that should indicate either bad input from a @@ -48,3 +49,17 @@ func NeverError(err error) { log.Panicf("NeverError() check failed: %v", err) } } + +// UnderlyingError returns the underlying error for known os error types. +// From: src/os/error.go +func UnderlyingError(err error) error { + switch err := err.(type) { + case *os.PathError: + return err.Err + case *os.LinkError: + return err.Err + case *os.SyscallError: + return err.Err + } + return err +} |