Get the LinuxSecurity news you want faster with RSS
Powered By
OpenBSD 2.6: at(1) Y2K Fix
Posted by LinuxSecurity.com Team
The at(1) command was unable to parse some kinds of dates.
Apply by doing:
cd /usr/src
patch -p0 < 015_aty2k.patch
cd usr.bin/at
make
make install
Index: usr.bin/at/at.c
===================================================================
RCS file: /cvs/src/usr.bin/at/at.c,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- usr.bin/at/at.c 1998/07/09 20:40:58 1.16
+++ usr.bin/at/at.c 1999/12/15 05:33:06 1.17
@@ -197,7 +197,7 @@
sigaction(SIGINT, &act, NULL);
- (void)strcpy(atfile, _PATH_ATJOBS);
+ (void)strlcpy(atfile, _PATH_ATJOBS, sizeof atfile);
ppos = atfile + strlen(atfile);
/*
Index: usr.bin/at/parsetime.c
===================================================================
RCS file: /cvs/src/usr.bin/at/parsetime.c,v
retrieving revision 1.8
retrieving revision 1.9
diff -u -r1.8 -r1.9
--- usr.bin/at/parsetime.c 1999/03/21 04:04:42 1.8
+++ usr.bin/at/parsetime.c 2000/01/05 08:06:25 1.9
@@ -443,21 +443,23 @@
struct tm *tm;
int mday, mon, year;
{
- if (year > 99) {
- if (year >= TM_YEAR_BASE)
- year -= TM_YEAR_BASE;
- else
- panic("garbled time");
- } else if (year != -1) {
- /*
- * check if the specified year is in the next century.
- * allow for one year of user error as many people will
- * enter n - 1 at the start of year n.
- */
- if (year < tm->tm_year % 100 - 1)
- year += 100;
- /* adjust for the year 2000 and beyond */
- year += tm->tm_year - (tm->tm_year % 100);
+
+ /*
+ * Convert year into tm_year format (year - 1900).
+ * We may be given the year in 2 digit, 4 digit, or tm_year format.
+ */
+ if (year != -1) {
+ if (year >= TM_YEAR_BASE)
+ year -= TM_YEAR_BASE; /* convert from 4 digit year */
+ else if (year < 100) {
+ /* Convert to tm_year assuming current century */
+ year += (tm->tm_year / 100) * 100;
+
+ if (year == tm->tm_year - 1)
+ year++; /* Common off by one error */
+ else if (year < tm->tm_year)
+ year += 100; /* must be in next century */
+ }
}
if (year < 0 &&