Avoid "invalid memory address or nil pointer dereference" panic
libcontainer.GetNamespace returns nil on FreeBSD because libcontainer.namespaceList is empty. In this case, Namespaces#Get should return nil instead of being panic. Docker-DCO-1.1-Signed-off-by: Kato Kazuyoshi <kato.kazuyoshi@gmail.com> (github: kzys) Upstream-commit: c5226d94fab4e261fe2407262d9b5177326d4062 Component: engine
This commit is contained in:
@ -68,7 +68,7 @@ func (n Namespaces) Contains(ns string) bool {
|
||||
|
||||
func (n Namespaces) Get(ns string) *Namespace {
|
||||
for _, nsp := range n {
|
||||
if nsp.Key == ns {
|
||||
if nsp != nil && nsp.Key == ns {
|
||||
return nsp
|
||||
}
|
||||
}
|
||||
|
||||
@ -18,6 +18,15 @@ func TestNamespacesContains(t *testing.T) {
|
||||
if !ns.Contains("NEWPID") {
|
||||
t.Fatal("namespaces should contain NEWPID but does not")
|
||||
}
|
||||
|
||||
withNil := Namespaces{
|
||||
GetNamespace("UNDEFINED"), // this element will be nil
|
||||
GetNamespace("NEWPID"),
|
||||
}
|
||||
|
||||
if !withNil.Contains("NEWPID") {
|
||||
t.Fatal("namespaces should contain NEWPID but does not")
|
||||
}
|
||||
}
|
||||
|
||||
func TestCapabilitiesContains(t *testing.T) {
|
||||
|
||||
Reference in New Issue
Block a user