Skip to content

Commit e04a857

Browse files
ssh/agent: fix TestMalformedRequests
Use a net.Pipe, rather than setting up a local TCP connection, for testing malformed SSH requests, since we don't need the complex intricacies of a real connection to test this protocol behavior. Fixes golang/go#50161 Change-Id: I5e46c42041ddd03b06725469216b82b801990e64 Reviewed-on: https://go-review.googlesource.com/c/crypto/+/371874 Reviewed-by: Bryan Mills <bcmills@google.com> Trust: Roland Shoemaker <roland@golang.org> Run-TryBot: Roland Shoemaker <roland@golang.org> TryBot-Result: Gopher Robot <gobot@golang.org>
1 parent 5e0467b commit e04a857

File tree

1 file changed

+13
-32
lines changed

1 file changed

+13
-32
lines changed

ssh/agent/client_test.go

+13-32
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import (
1616
"runtime"
1717
"strconv"
1818
"strings"
19-
"sync"
2019
"testing"
2120
"time"
2221

@@ -204,44 +203,26 @@ func testAgentInterface(t *testing.T, agent ExtendedAgent, key interface{}, cert
204203

205204
func TestMalformedRequests(t *testing.T) {
206205
keyringAgent := NewKeyring()
207-
listener, err := netListener()
208-
if err != nil {
209-
t.Fatalf("netListener: %v", err)
210-
}
211-
defer listener.Close()
212206

213207
testCase := func(t *testing.T, requestBytes []byte, wantServerErr bool) {
214-
var wg sync.WaitGroup
215-
wg.Add(1)
208+
c, s := net.Pipe()
209+
defer c.Close()
210+
defer s.Close()
216211
go func() {
217-
defer wg.Done()
218-
c, err := listener.Accept()
212+
_, err := c.Write(requestBytes)
219213
if err != nil {
220-
t.Errorf("listener.Accept: %v", err)
221-
return
222-
}
223-
defer c.Close()
224-
225-
err = ServeAgent(keyringAgent, c)
226-
if err == nil {
227-
t.Error("ServeAgent should have returned an error to malformed input")
228-
} else {
229-
if (err != io.EOF) != wantServerErr {
230-
t.Errorf("ServeAgent returned expected error: %v", err)
231-
}
214+
t.Errorf("Unexpected error writing raw bytes on connection: %v", err)
232215
}
216+
c.Close()
233217
}()
234-
235-
c, err := net.Dial("tcp", listener.Addr().String())
236-
if err != nil {
237-
t.Fatalf("net.Dial: %v", err)
238-
}
239-
_, err = c.Write(requestBytes)
240-
if err != nil {
241-
t.Errorf("Unexpected error writing raw bytes on connection: %v", err)
218+
err := ServeAgent(keyringAgent, s)
219+
if err == nil {
220+
t.Error("ServeAgent should have returned an error to malformed input")
221+
} else {
222+
if (err != io.EOF) != wantServerErr {
223+
t.Errorf("ServeAgent returned expected error: %v", err)
224+
}
242225
}
243-
c.Close()
244-
wg.Wait()
245226
}
246227

247228
var testCases = []struct {

0 commit comments

Comments
 (0)