diff --git a/channels/chan_sip.c b/channels/chan_sip.c
index d9175a8087e81a0efadc15eac491bcc47d240d4a..6c635252ee2b23e405db09b9f8c339726a0ca03c 100644
--- a/channels/chan_sip.c
+++ b/channels/chan_sip.c
@@ -3211,7 +3211,7 @@ static int proxy_update(struct sip_proxy *proxy)
 static int port_str2int(const char *pt, unsigned int standard)
 {
 	int port = standard;
-	if (ast_strlen_zero(pt) || (sscanf(pt, "%30d", &port) != 1) || (port < 0)) {
+	if (ast_strlen_zero(pt) || (sscanf(pt, "%30d", &port) != 1) || (port < 1) || (port > 65535)) {
 		port = standard;
 	}