diff --git a/src/ChangeLog b/src/ChangeLog
index ad58ea50..9547bd7e 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
+2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
+
+	* url.c (url_parse): Reject port numbers larger than 65535.  We
+	also check for overflow while parsing port numbers.
+
 2005-03-06  Hrvoje Niksic  <hniksic@xemacs.org>
 
 	* utils.c (read_file): Don't use wgint for file size; LFS won't
diff --git a/src/url.c b/src/url.c
index da270019..35ae5f81 100644
--- a/src/url.c
+++ b/src/url.c
@@ -781,6 +781,13 @@ url_parse (const char *url, int *error)
 		  goto error;
 		}
 	      port = 10 * port + (*pp - '0');
+	      /* Check for too large port numbers here, before we have
+		 a chance to overflow on bogus port values.  */
+	      if (port > 65535)
+		{
+		  error_code = PE_BAD_PORT_NUMBER;
+		  goto error;
+		}
 	    }
 	}
     }