From 1b3dcaed9fecd614135faaef243151f8085af7e5 Mon Sep 17 00:00:00 2001 From: Harry Sintonen Date: Mon, 16 May 2022 22:18:04 +0300 Subject: [PATCH] bindlocal: don't use a random port if port number would wrap Earlier if CURLOPT_LOCALPORT + CURLOPT_LOCALPORTRANGE would go past port 65535 the code would fall back to random port rather than giving up. Closes #8862 --- lib/connect.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/connect.c b/lib/connect.c index 9bcf525ebb..a50c09a338 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -470,8 +470,10 @@ static CURLcode bindlocal(struct Curl_easy *data, } if(--portnum > 0) { - infof(data, "Bind to local port %hu failed, trying next", port); port++; /* try next port */ + if(port == 0) + break; + infof(data, "Bind to local port %hu failed, trying next", port - 1); /* We re-use/clobber the port variable here below */ if(sock->sa_family == AF_INET) si4->sin_port = ntohs(port); -- 2.47.3