From 089f11817e3eb5a23bf9fb679dc4e6ad61de48ec Mon Sep 17 00:00:00 2001 From: Dmitry Vyukov Date: Tue, 26 Jun 2018 14:12:43 +0200 Subject: syz-fuzzer: fix gvisor testing Testing code wasn't ready to dial stdin. Make it use the same logic rpc package uses to connecto to host. --- pkg/instance/instance.go | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) (limited to 'pkg/instance') diff --git a/pkg/instance/instance.go b/pkg/instance/instance.go index 2849098ac..f804b2724 100644 --- a/pkg/instance/instance.go +++ b/pkg/instance/instance.go @@ -8,6 +8,7 @@ package instance import ( "bytes" "fmt" + "io/ioutil" "net" "os" "path/filepath" @@ -214,10 +215,21 @@ func (inst *inst) testInstance() error { acceptErr := make(chan error, 1) go func() { conn, err := ln.Accept() - if err == nil { - conn.Close() + if err != nil { + acceptErr <- err + return } - acceptErr <- err + defer conn.Close() + data, err := ioutil.ReadAll(conn) + if err != nil { + acceptErr <- err + return + } + if string(data) != "HELLO" { + acceptErr <- fmt.Errorf("received bad handshake from VM: %q", string(data)) + return + } + acceptErr <- nil }() fwdAddr, err := inst.vm.Forward(ln.Addr().(*net.TCPAddr).Port) if err != nil { -- cgit mrf-deployment