aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmitry Vyukov <dvyukov@google.com>2024-05-31 10:34:46 +0200
committerDmitry Vyukov <dvyukov@google.com>2024-06-03 09:36:40 +0000
commit7783468bf6046113f58a8a7b5de030584639e236 (patch)
tree27ffd111c88957623d6470133b969a42aa27542c
parent0aba235248187cbf1225fc79ad9d13c8e6c5b48a (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.go6
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