diff options
author | Theo de Raadt <deraadt@cvs.openbsd.org> | 2013-04-19 17:28:08 +0000 |
---|---|---|
committer | Theo de Raadt <deraadt@cvs.openbsd.org> | 2013-04-19 17:28:08 +0000 |
commit | 42b806d7f1fde88929918ea2319b151f2d0b2b8f (patch) | |
tree | 404dce2c765fb33097363ad3142177f166cc9dda /usr.sbin | |
parent | 63cbbf6e0eb45e5f4a43c327415e65f1b440e666 (diff) |
Constrain the 2038 check to only when sizeof(time_t) == sizeof(int).
Adding more powerful checking is too difficult. We'll fix this problem
by moving to 64-bit time_t.. and once we do, we don't want this code to
falsely trigger.
ok millert
Diffstat (limited to 'usr.sbin')
-rw-r--r-- | usr.sbin/eeprom/getdate.y | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/usr.sbin/eeprom/getdate.y b/usr.sbin/eeprom/getdate.y index 8a361ed48be..da5b7b7c804 100644 --- a/usr.sbin/eeprom/getdate.y +++ b/usr.sbin/eeprom/getdate.y @@ -1,5 +1,5 @@ %{ -/* $OpenBSD: getdate.y,v 1.6 2004/08/01 18:32:18 deraadt Exp $ */ +/* $OpenBSD: getdate.y,v 1.7 2013/04/19 17:28:07 deraadt Exp $ */ /* ** Originally written by Steven M. Bellovin <smb@research.att.com> while @@ -550,9 +550,9 @@ Convert(time_t Month, time_t Day, time_t Year, time_t Hours, time_t Minutes, } DaysInMonth[1] = Year % 4 == 0 && (Year % 100 != 0 || Year % 400 == 0) ? 29 : 28; - /* Checking for 2038 bogusly assumes that time_t is 32 bits. But - I'm too lazy to try to check for time_t overflow in another way. */ - if (Year < EPOCH || Year > 2038 + /* XXX Sloppily check for 2038 if time_t is 32 bits */ + if (Year < EPOCH + || (sizeof(time_t) == sizeof(int) && Year > 2038) || Month < 1 || Month > 12 /* Lint fluff: "conversion from long may lose accuracy" */ || Day < 1 || Day > DaysInMonth[(int)--Month]) |