From: Shawn Routhier Date: Thu, 16 Apr 2015 02:57:00 +0000 (-0700) Subject: [master] Treat dates greater than 2038 as never expire (infinite) X-Git-Tag: v4_3_3b1~27 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=90fdd3376df92350c6a01a486786c66120217e11;p=thirdparty%2Fdhcp.git [master] Treat dates greater than 2038 as never expire (infinite) --- diff --git a/RELNOTES b/RELNOTES index f30356eff..9407ed86e 100644 --- a/RELNOTES +++ b/RELNOTES @@ -99,6 +99,12 @@ by Eric Young (eay@cryptsoft.com). DHCPv4 it would not be written to the new lease file. [ISC-Bugs #37791] +- When parsing dates for leases convert dates past 2038 to "never". + This avoids problems with integer overflows in the date and time + handling code for people that decide to use very large lease times + or add a lease entry with a date far in the future. + [ISC-Bugs #33056] + Changes since 4.3.2rc2 - None diff --git a/common/parse.c b/common/parse.c index 7255fee3f..779783191 100644 --- a/common/parse.c +++ b/common/parse.c @@ -3,7 +3,7 @@ Common parser code for dhcpd and dhclient. */ /* - * Copyright (c) 2004-2014 by Internet Systems Consortium, Inc. ("ISC") + * Copyright (c) 2004-2015 by Internet Systems Consortium, Inc. ("ISC") * Copyright (c) 1995-2003 by Internet Software Consortium * * Permission to use, copy, modify, and distribute this software for any @@ -1108,6 +1108,13 @@ parse_date_core(cfile) return((TIME)0); } + /* If the year is 2038 or greater return the max time to avoid + * overflow issues. We could try and be more precise but there + * doesn't seem to be a good reason to worry about it and waste + * the cpu looking at the rest of the date. */ + if (year >= 138) + return(MAX_TIME); + /* Guess the time value... */ guess = ((((((365 * (year - 70) + /* Days in years since '70 */ (year - 69) / 4 + /* Leap days since '70 */