diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2024-05-31 10:34:46 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2024-06-03 09:36:40 +0000 |
| commit | 7783468bf6046113f58a8a7b5de030584639e236 (patch) | |
| tree | 27ffd111c88957623d6470133b969a42aa27542c | |
| parent | 0aba235248187cbf1225fc79ad9d13c8e6c5b48a (diff) | |
syz-manager: harden against bad fuzzer replies
Fuzzer memory may be corrupted, but it may contain a bug.
Don't crash on bad replies.
| -rw-r--r-- | syz-manager/rpc.go | 6 |
1 files changed, 5 insertions, 1 deletions
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 |
