From ac680c7cc91ea82316471433537f3101c2af39ea Mon Sep 17 00:00:00 2001 From: Aleksandr Nogikh Date: Wed, 22 Jan 2025 15:39:18 +0100 Subject: pkg/rpcserver: prevent a nil pointer dereference If we get a Hanged != "" response from a non-RequestTypeProgram request, we used to end up trying to serialize an nil *prog.Prog value. Add a missing if condition. --- pkg/rpcserver/runner.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'pkg/rpcserver') diff --git a/pkg/rpcserver/runner.go b/pkg/rpcserver/runner.go index 9ac1a6866..a6b763b9a 100644 --- a/pkg/rpcserver/runner.go +++ b/pkg/rpcserver/runner.go @@ -436,7 +436,10 @@ func (runner *Runner) handleExecResult(msg *flatrpc.ExecResult) error { resErr = errors.New(msg.Error) } else if msg.Hanged { status = queue.Hanged - runner.lastExec.Hanged(int(msg.Id), int(msg.Proc), req.Prog.Serialize(), osutil.MonotonicNano()) + if req.Type == flatrpc.RequestTypeProgram { + // We only track the latest executed programs. + runner.lastExec.Hanged(int(msg.Id), int(msg.Proc), req.Prog.Serialize(), osutil.MonotonicNano()) + } runner.hanged[msg.Id] = true } req.Done(&queue.Result{ -- cgit mrf-deployment