diff --git a/runtime.go b/runtime.go index d1f408d00e..a2669343ce 100644 --- a/runtime.go +++ b/runtime.go @@ -18,6 +18,7 @@ import ( "os" "os/exec" "path" + "regexp" "sort" "strings" "sync" @@ -29,7 +30,10 @@ import ( // For more information see: http://sourceforge.net/p/aufs/aufs3-standalone/ci/aufs3.12/tree/config.mk const MaxImageDepth = 127 -var defaultDns = []string{"8.8.8.8", "8.8.4.4"} +var ( + defaultDns = []string{"8.8.8.8", "8.8.4.4"} + validContainerName = regexp.MustCompile(`^/?[a-zA-Z0-9_-]+$`) +) type Capabilities struct { MemoryLimit bool @@ -420,7 +424,12 @@ func (runtime *Runtime) Create(config *Config, name string) (*Container, []strin if err != nil { name = utils.TruncateID(id) } + } else { + if !validContainerName.MatchString(name) { + return nil, nil, fmt.Errorf("Invalid container name (%s), only [a-zA-Z0-9_-] are allowed", name) + } } + if name[0] != '/' { name = "/" + name }