From 103738d47c86d8229f4d7921949cf2d3dbd0a057 Mon Sep 17 00:00:00 2001 From: Mathias Fredriksson Date: Mon, 5 Sep 2022 14:52:54 +0300 Subject: [PATCH] fix: Prevent nil pointer deref in reconnectingPTY Related #3870 --- agent/agent.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/agent/agent.go b/agent/agent.go index 5f39611abcf44..981c633a82e38 100644 --- a/agent/agent.go +++ b/agent/agent.go @@ -728,26 +728,28 @@ func (a *agent) handleReconnectingPTY(ctx context.Context, msg reconnectingPTYIn if ok { rpty, ok = rawRPTY.(*reconnectingPTY) if !ok { - a.logger.Warn(ctx, "found invalid type in reconnecting pty map", slog.F("id", msg.ID)) + a.logger.Error(ctx, "found invalid type in reconnecting pty map", slog.F("id", msg.ID)) + return } } else { // Empty command will default to the users shell! cmd, err := a.createCommand(ctx, msg.Command, nil) if err != nil { - a.logger.Warn(ctx, "create reconnecting pty command", slog.Error(err)) + a.logger.Error(ctx, "create reconnecting pty command", slog.Error(err)) return } cmd.Env = append(cmd.Env, "TERM=xterm-256color") - ptty, process, err := pty.Start(cmd) + // Default to buffer 64KiB. + circularBuffer, err := circbuf.NewBuffer(64 << 10) if err != nil { - a.logger.Warn(ctx, "start reconnecting pty command", slog.F("id", msg.ID)) + a.logger.Error(ctx, "create circular buffer", slog.Error(err)) + return } - // Default to buffer 64KiB. - circularBuffer, err := circbuf.NewBuffer(64 << 10) + ptty, process, err := pty.Start(cmd) if err != nil { - a.logger.Warn(ctx, "create circular buffer", slog.Error(err)) + a.logger.Error(ctx, "start reconnecting pty command", slog.F("id", msg.ID)) return }