aboutsummaryrefslogtreecommitdiff
path: root/ssh/agent/client_test.go
diff options
context:
space:
mode:
authorRoland Shoemaker <roland@golang.org>2021-12-14 12:06:28 -0800
committerRoland Shoemaker <roland@golang.org>2022-01-26 17:37:29 +0000
commite04a8579fee6e9c8fa0b5a41b7d9db85262e2f57 (patch)
tree64c882b942bf060b29d4d734e584537ce6bcf0c3 /ssh/agent/client_test.go
parent5e0467b6c7cee3ce8969a8b584d9e6ab01d074f7 (diff)
downloadgo-x-crypto-e04a8579fee6e9c8fa0b5a41b7d9db85262e2f57.tar.xz
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>
Diffstat (limited to 'ssh/agent/client_test.go')
-rw-r--r--ssh/agent/client_test.go45
1 files changed, 13 insertions, 32 deletions
diff --git a/ssh/agent/client_test.go b/ssh/agent/client_test.go
index de1c783..a81bcd6 100644
--- a/ssh/agent/client_test.go
+++ b/ssh/agent/client_test.go
@@ -16,7 +16,6 @@ import (
"runtime"
"strconv"
"strings"
- "sync"
"testing"
"time"
@@ -204,44 +203,26 @@ func testAgentInterface(t *testing.T, agent ExtendedAgent, key interface{}, cert
func TestMalformedRequests(t *testing.T) {
keyringAgent := NewKeyring()
- listener, err := netListener()
- if err != nil {
- t.Fatalf("netListener: %v", err)
- }
- defer listener.Close()
testCase := func(t *testing.T, requestBytes []byte, wantServerErr bool) {
- var wg sync.WaitGroup
- wg.Add(1)
+ c, s := net.Pipe()
+ defer c.Close()
+ defer s.Close()
go func() {
- defer wg.Done()
- c, err := listener.Accept()
+ _, err := c.Write(requestBytes)
if err != nil {
- t.Errorf("listener.Accept: %v", err)
- return
- }
- defer c.Close()
-
- err = ServeAgent(keyringAgent, c)
- if err == nil {
- t.Error("ServeAgent should have returned an error to malformed input")
- } else {
- if (err != io.EOF) != wantServerErr {
- t.Errorf("ServeAgent returned expected error: %v", err)
- }
+ t.Errorf("Unexpected error writing raw bytes on connection: %v", err)
}
+ c.Close()
}()
-
- c, err := net.Dial("tcp", listener.Addr().String())
- if err != nil {
- t.Fatalf("net.Dial: %v", err)
- }
- _, err = c.Write(requestBytes)
- if err != nil {
- t.Errorf("Unexpected error writing raw bytes on connection: %v", err)
+ err := ServeAgent(keyringAgent, s)
+ if err == nil {
+ t.Error("ServeAgent should have returned an error to malformed input")
+ } else {
+ if (err != io.EOF) != wantServerErr {
+ t.Errorf("ServeAgent returned expected error: %v", err)
+ }
}
- c.Close()
- wg.Wait()
}
var testCases = []struct {