From bd59fba999b6d3d30b66f514c30230162f5164e5 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Wed, 27 Sep 2023 15:36:32 +0000 Subject: [PATCH] fix(cli/cliui): avoid nil pointer deref when agent disconnects Fixes #9884 --- cli/cliui/agent.go | 4 +++- cli/cliui/agent_test.go | 1 + 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/cli/cliui/agent.go b/cli/cliui/agent.go index 42a42f82de983..7620efa83b1e6 100644 --- a/cli/cliui/agent.go +++ b/cli/cliui/agent.go @@ -237,12 +237,14 @@ func Agent(ctx context.Context, writer io.Writer, agentID uuid.UUID, opts AgentO sw.Start(stage) sw.Log(time.Now(), codersdk.LogLevelWarn, "Wait for it to reconnect or restart your workspace.") sw.Log(time.Now(), codersdk.LogLevelWarn, troubleshootingMessage(agent, "https://coder.com/docs/v2/latest/templates#agent-connection-issues")) + + disconnectedAt := *agent.DisconnectedAt for agent.Status == codersdk.WorkspaceAgentDisconnected { if agent, err = fetch(); err != nil { return xerrors.Errorf("fetch: %w", err) } } - sw.Complete(stage, agent.LastConnectedAt.Sub(*agent.DisconnectedAt)) + sw.Complete(stage, agent.LastConnectedAt.Sub(disconnectedAt)) } } } diff --git a/cli/cliui/agent_test.go b/cli/cliui/agent_test.go index 2c474e84c22f5..ffb116f3a8f01 100644 --- a/cli/cliui/agent_test.go +++ b/cli/cliui/agent_test.go @@ -133,6 +133,7 @@ func TestAgent(t *testing.T) { }, func(_ context.Context, agent *codersdk.WorkspaceAgent, _ chan []codersdk.WorkspaceAgentLog) error { agent.Status = codersdk.WorkspaceAgentConnected + agent.DisconnectedAt = nil agent.LastConnectedAt = ptr.Ref(time.Now()) return nil },