From 0878381d0bf5d440379757d7c0188d6ff8109eb2 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Wed, 27 Sep 2023 19:10:15 +0300 Subject: [PATCH] fix(cli/cliui): avoid nil pointer deref when agent disconnects (#9892) 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 42a42f82de..7620efa83b 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 2c474e84c2..ffb116f3a8 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 },