dotcloud/docker

View on GitHub
internal/safepath/errors.go

Summary

Maintainability
A
0 mins
Test Coverage
package safepath

// ErrNotAccessible is returned by Join when the resulting path doesn't exist,
// is not accessible, or any of the path components was replaced with a symlink
// during the path traversal.
type ErrNotAccessible struct {
    Path  string
    Cause error
}

func (*ErrNotAccessible) NotFound() {}

func (e *ErrNotAccessible) Unwrap() error {
    return e.Cause
}

func (e *ErrNotAccessible) Error() string {
    msg := "cannot access path " + e.Path
    if e.Cause != nil {
        msg += ": " + e.Cause.Error()
    }
    return msg
}

// ErrEscapesBase is returned by Join when the resulting concatenation would
// point outside of the specified base directory.
type ErrEscapesBase struct {
    Base, Subpath string
}

func (*ErrEscapesBase) InvalidParameter() {}

func (e *ErrEscapesBase) Error() string {
    msg := "path concatenation escapes the base directory"
    if e.Base != "" {
        msg += ", base: " + e.Base
    }
    if e.Subpath != "" {
        msg += ", subpath: " + e.Subpath
    }
    return msg
}