Skip to content

Commit 6b367a0

Browse files
committed
ensure that a free port is always used
1 parent c39c704 commit 6b367a0

File tree

1 file changed

+10
-6
lines changed

1 file changed

+10
-6
lines changed

internal/pkg/gitjacker/retriever_test.go

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package gitjacker
33
import (
44
"fmt"
55
"io/ioutil"
6+
"net"
67
"net/http"
78
"net/url"
89
"os"
@@ -19,7 +20,6 @@ type vulnerableServer struct {
1920
}
2021

2122
func newVulnerableServer() (*vulnerableServer, error) {
22-
2323
dir, err := ioutil.TempDir(os.TempDir(), "gjtest_server")
2424
if err != nil {
2525
return nil, err
@@ -50,14 +50,13 @@ func newVulnerableServer() (*vulnerableServer, error) {
5050
return &vulnerableServer{
5151
dir: dir,
5252
server: &http.Server{
53-
Addr: "127.0.0.1:9999",
5453
Handler: fs,
5554
},
5655
}, nil
5756
}
5857

59-
func (v *vulnerableServer) Listen() error {
60-
return v.server.ListenAndServe()
58+
func (v *vulnerableServer) Listen(listener net.Listener) error {
59+
return v.server.Serve(listener)
6160
}
6261

6362
func (v *vulnerableServer) Addr() string {
@@ -93,7 +92,12 @@ func TestRetrieval(t *testing.T) {
9392
t.Fatal(err)
9493
}
9594

96-
go func() { _ = server.Listen() }()
95+
listener, err := net.Listen("tcp", ":0")
96+
if err != nil {
97+
panic(err)
98+
}
99+
100+
go func() { _ = server.Listen(listener) }()
97101
defer func() { _ = server.Close() }()
98102

99103
expectedContent := "<?php\necho 'hello';\n"
@@ -105,7 +109,7 @@ func TestRetrieval(t *testing.T) {
105109
t.Fatal(err)
106110
}
107111

108-
target, err := url.Parse(fmt.Sprintf("http://%s", server.Addr()))
112+
target, err := url.Parse(fmt.Sprintf("http://127.0.0.1:%v", listener.Addr().(*net.TCPAddr).Port))
109113
if err != nil {
110114
t.Fatal(err)
111115
}

0 commit comments

Comments
 (0)