From 00f62150b4cbac74cfb858547a666567b5ff1ad5 Mon Sep 17 00:00:00 2001 From: David Gageot Date: Tue, 24 Nov 2015 17:57:42 +0100 Subject: [PATCH] FIX nil pointer dereference in machine ls Signed-off-by: David Gageot --- commands/ls.go | 7 ++++++- commands/ls_test.go | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/commands/ls.go b/commands/ls.go index 118cb298f3..e38c3e0432 100644 --- a/commands/ls.go +++ b/commands/ls.go @@ -244,13 +244,18 @@ func attemptGetHostState(h *host.Host, stateQueryChan chan<- HostListItem) { hostError = "" } + var swarmOptions *swarm.Options + if h.HostOptions != nil { + swarmOptions = h.HostOptions.SwarmOptions + } + stateQueryChan <- HostListItem{ Name: h.Name, Active: isActive(currentState, url), DriverName: h.Driver.DriverName(), State: currentState, URL: url, - SwarmOptions: h.HostOptions.SwarmOptions, + SwarmOptions: swarmOptions, Error: hostError, } } diff --git a/commands/ls_test.go b/commands/ls_test.go index 96aad24f46..881b1bff1b 100644 --- a/commands/ls_test.go +++ b/commands/ls_test.go @@ -455,3 +455,24 @@ func TestGetHostStateTimeout(t *testing.T) { stateTimeoutDuration = originalTimeout } + +func TestGetHostStateError(t *testing.T) { + hosts := []*host.Host{ + { + Name: "foo", + Driver: &fakedriver.Driver{ + MockState: state.Error, + }, + }, + } + + hostItems := getHostListItems(hosts) + hostItem := hostItems[0] + + assert.Equal(t, "foo", hostItem.Name) + assert.Equal(t, state.Error, hostItem.State) + assert.Equal(t, "Driver", hostItem.DriverName) + assert.Empty(t, hostItem.URL) + assert.Equal(t, "Unable to get ip", hostItem.Error) + assert.Nil(t, hostItem.SwarmOptions) +}