summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorSadie Powell <sadie@witchery.services>2022-01-17 12:08:16 +0000
committerPatrick <tingping@tingping.se>2022-01-17 18:36:49 -0600
commit91adfb5917d31a7c29d6c0536f1e301542577e81 (patch)
tree8182dcf7b9c6586b64ad0b0bc6f82f705994a1a7
parent9c7109b57869881660fefeaf98a10b7911118117 (diff)
Fix handling invalid ports.
Instead of wrapping around, which is not behaviour any reasonable
user would expect, just use the default port if above 65535.

Disallow connecting on port 0. This port has special meaning and
servers can not listen on it. It is more likely the user just
gave an invalid value to the port field as atoi("invalid") == 0.
-rw-r--r--src/common/server.c3
1 files changed, 1 insertions, 2 deletions
diff --git a/src/common/server.c b/src/common/server.c
index f90ce28f..c2965eb3 100644
--- a/src/common/server.c
+++ b/src/common/server.c
@@ -1559,7 +1559,7 @@ server_connect (server *serv, char *hostname, int port, int no_login)
 	if (!hostname[0])
 		return;
 
-	if (port < 0)
+	if (port < 1 || port > 65535)
 	{
 		/* use default port for this server type */
 		port = 6667;
@@ -1568,7 +1568,6 @@ server_connect (server *serv, char *hostname, int port, int no_login)
 			port = 6697;
 #endif
 	}
-	port &= 0xffff;	/* wrap around */
 
 	if (serv->connected || serv->connecting || serv->recondelay_tag)
 		server_disconnect (sess, TRUE, -1);