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; + } } } }