From 7783468bf6046113f58a8a7b5de030584639e236 Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Fri, 31 May 2024 10:34:46 +0200 Subject: syz-manager: harden against bad fuzzer replies Fuzzer memory may be corrupted, but it may contain a bug. Don't crash on bad replies. --- syz-manager/rpc.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/syz-manager/rpc.go b/syz-manager/rpc.go index 7acb030df..c69ccea44 100644 --- a/syz-manager/rpc.go +++ b/syz-manager/rpc.go @@ -295,13 +295,17 @@ func (serv *RPCServer) connectionLoop(runner *Runner) error { if err != nil { return err } + unpacked := raw.UnPack() + if unpacked.Msg == nil || unpacked.Msg.Value == nil { + return errors.New("received no message") + } switch msg := raw.UnPack().Msg.Value.(type) { case *flatrpc.ExecutingMessage: err = serv.handleExecutingMessage(runner, msg) case *flatrpc.ExecResult: err = serv.handleExecResult(runner, msg) default: - panic(fmt.Sprintf("unknown message %T", msg)) + return fmt.Errorf("received unknown message type %T", msg) } if err != nil { return err -- cgit mrf-deployment