Merge pull request #1741 from dnephin/fix-task-path-conflict

Validate that root and state paths are different
This commit is contained in:
Stephen Day 2017-11-13 10:55:29 -08:00 committed by GitHub
commit a74148ba27
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 3 deletions

View File

@ -39,12 +39,15 @@ import (
// New creates and initializes a new containerd server // New creates and initializes a new containerd server
func New(ctx context.Context, config *Config) (*Server, error) { func New(ctx context.Context, config *Config) (*Server, error) {
if config.Root == "" { switch {
case config.Root == "":
return nil, errors.New("root must be specified") return nil, errors.New("root must be specified")
} case config.State == "":
if config.State == "" {
return nil, errors.New("state must be specified") return nil, errors.New("state must be specified")
case config.Root == config.State:
return nil, errors.New("root and state must be different paths")
} }
if err := os.MkdirAll(config.Root, 0711); err != nil { if err := os.MkdirAll(config.Root, 0711); err != nil {
return nil, err return nil, err
} }

17
server/server_test.go Normal file
View File

@ -0,0 +1,17 @@
package server
import (
"testing"
"github.com/stretchr/testify/assert"
"golang.org/x/net/context"
)
func TestNewErrorsWithSamePathForRootAndState(t *testing.T) {
path := "/tmp/path/for/testing"
_, err := New(context.Background(), &Config{
Root: path,
State: path,
})
assert.EqualError(t, err, "root and state must be different paths")
}