NETWORK PRESENCE ABOUT SERVICES PRODUCTS TRAINING CONTACT US SEARCH SUPPORT
 


Search
display results
words begin  exact words  any words part 

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[FW1] Dayligth saving time problem explanation [Fw: [BUGTRAQ] The April Fools 2001 bug in Windows]



It looks like that you experience the problem discussed in the message below
(from BugTraq)
And it is going to last for a week.

----- Original Message -----
From: "Richard M. Smith" <[email protected]>
To: <[email protected]>
Sent: Wednesday, March 28, 2001 3:14 PM
Subject: [BUGTRAQ] The April Fools 2001 bug in Windows


> Hi,
>
> Attached is a message I wrote 2 years ago about a time-related bug in
> Windows.  It turns out the bug is going to hit on this Sunday.
> Applications built with certain versions of Visual C++ could
> start giving the wrong time of day starting on Sunday.  The problem
> will last for a week.
>
> Microsoft released a patch for this problem in early 1999,
> and many computers have been updated with a fix.  However,
> in some cases applications also need to be updated and it is
> very unclear how many of them are deployed with the
> bug.  This bug will most likely be present in embedded computers
> that are dedicated to doing particular jobs.  These systems
> typically don't get software updates as often as desktop
> computers.
>
> Some systems that might be affected by the bug include:
>
>    - Airport arrival and departure time monitors
>    - Building access control systems
>    - Scheduling systems for transportation
>    - Hotel wake-up systems
>
> I've attached a second message which details how the problem
> also affects programs that use the MFC library.
>
> Here is a Microsoft FAQ about the bug:
>
>    http://msdn.microsoft.com/visualc/headlines/2001.asp
>
> My crystal ball is very fuzzy is if this bug is going
> to cause any problems or not.
>
> Richard M. Smith
> CTO, Privacy Foundation
>
> ========================================================================
>
> From  Thu Jan  7 08:35:45 1999
> Date: Thu, 7 Jan 1999 10:18:33 +0100
> From: Richard M. Smith
> To: [email protected]
> Subject: The Windows "April Fools 2001" bug
>
> January 7, 1999
>
> I have discovered a serious bug in Windows which will cause
> many Windows applications to give the incorrect time starting
> on April 1, 2001.  Although this new bug is not technically a Y2K
> bug, it is similar because programs will fail on a particular
> day in the next century.
>
> The bug causes Windows applications to give times which are off by one
hour
> even though the Windows clock shows the correct time.  The bug will
continue
> for one week until April 8th of 2001, when applications will again show
the
> correct time.  The bug occurs under Windows 95, 98, and NT.
>
> The problem is caused by the Visual C++ runtime library being
> confused and assuming that daylight saving time doesn't start until
> April the 8th.  In fact, daylight saving time starts on April 1 in
> the year 2001.  The confusion appears to be caused by the fact that
> April 1 falls on a Sunday in the year 2001.  The same bug occurs
> in other years where April 1 also falls on a Sunday.  The last time this
> happened was in 1990 and after 2001 it will occur again in 2007.  If April
1
> falls on any other day of the week, the bug does not occur.
>
> I reported the bug to Microsoft on Jan. 5th and got confirmation of
> from them on the evening of Jan. 6th.  At the present time, Microsoft told
> me that they don't know when a fix will be available for the bug.
>
> For some applications, users should be able to fix the
> problem by downloading a new version of the Visual C++ runtime
> library DLL, MSVCRT.DLL.  Since the DLL now ships as part of Windows,
> I would assume the fixed DLL will be available of the Windows Update
> site.
>
> Unfortunately not all applications can be corrected with a new release of
> MSVCRT.DLL.  Any applications which statically links with the Visual C++
> runtime will have to be fixed by the application vendor.  Users will
> have to download the new releases of these kinds of applications.
>
> In my testing, I believe that the bug was introduced in version 4.1 of
> Visual C++.  It is present in versions 4.2, 5.0, and 6.0 according to
> my testing.
>
> At the present time, the bug has been confirmed only in North American
> time zones.  Outside North America it is unknown if the same bug
> exists or not.  If it does exists, it may occur on different days
> and different years.
>
> I have written a small program in C that tests for the problem.
> The source code for the test program is attached to the end of this
> message.
>
> This "April Fools 2001" bug is present in the localtime() function, but
> is probably also in other functions defined in the C language "time.h"
> header file.
>
> Here is the output from the test program under Windows 98:
>
>    0x3AC796D0 = Sunday, April 1, 2001 -- 16:00:00 Eastern Standard Time --
> DOY=90
>    0x3ACF2B70 = Saturday, April 7, 2001 -- 10:00:00 Eastern Standard
Time --
> DOY=96
>    0x3AD06EE0 = Sunday, April 8, 2001 -- 10:00:00 Eastern Daylight Time --
> DOY=97
>
> The hours and time zones are incorrect for April 1st and April 7th.  The
> time
> on April 8th is correct.
>
> A bit of background.  In the United State and Canada, daylight
> saving time (DST) always starts on the first Sunday in April and ends on
> the last Sunday in October.  More information of the DST rules can
> be found in the article at http://www.energy.ca.gov/daylightsaving.html.
>
> I am interested for folks to test for this same bug in other
> operating systems and programming tools.  If you do run any tests,
> I would appreciate in hearing the results via Email.  I know that
> JavaScript has the bug in Netscape and Internet Explorer as well as
> Win32 version of Perl.  Excel and Netscape Java Virtual Machine on
> the other hand seem immune to the bug.
>
> Thanks,
> Richard M. Smith
>
> --------------------------------------------------------------------------
--
> ----
>
> //
> // APRIL1.C -- Simple test program for the "April's Fools 2001" bug
> //
> // by Richard M. Smith
> // copyright (C) 1999
> //
>
> #include <stdio.h>
> #include <time.h>
> #include <string.h>
>
> #define SECS_PER_HOUR (60 * 60)
> #define SECS_PER_DAY (24 * SECS_PER_HOUR)
> #define SECS_PER_YEAR (365 * SECS_PER_DAY)
>
> #define START (3 * SECS_PER_DAY)
> #define INCR (23 * SECS_PER_HOUR)
> #define MAXTIMES ((0x80000000L - START) / INCR)
>
> void print_time(time_t mytime);
>
> char *month_tab[] =
> {
>         "January",
>         "February",
>         "March",
>         "April",
>         "May",
>         "June",
>         "July",
>         "August",
>         "September",
>         "October",
>         "November",
>         "December"
> };
>
> char *dow_tab[] =
> {
>         "Sunday",
>         "Monday",
>         "Tuesday",
>         "Wednesday",
>         "Thursday",
>         "Friday",
>         "Saturday"
> };
>
> int main()
>
> {
>
>         print_time(0x3AC796D0);  // Sunday, April 1, 2001
>         print_time(0x3ACF2B70);  // Saturday, April 7, 2001
>         print_time(0x3AD06EE0);  // Sunday, April 8, 2001
>         return 0;
>
> }
>
> //
> // print_time -- print out a time_t value converted by localtime()
> //
>
> void print_time(time_t mytime)
>
> {
>
>     char month[100];
>     char dow[100];
>     struct tm *tmp;
>
>     tmp = localtime(&mytime);
>     if(tmp == NULL)
>     {
>         printf("0x%08lX = Invalid time\n", mytime);
>         return;
>     }
>     if(tmp->tm_mon >= 0 && tmp->tm_mon <= 11)
>         strcpy(month, month_tab[tmp->tm_mon]);
>     else
>         sprintf(month, "BadMonth=%d", tmp->tm_mon);
>     if(tmp->tm_wday >= 0 && tmp->tm_wday <= 6)
>         strcpy(dow, dow_tab[tmp->tm_wday]);
>     else
>         sprintf(month, "BadDOW=%d", tmp->tm_wday);
>     printf("0x%08lX = %s, %s %d, %d -- %d:%02d:%02d %s -- DOY=%d\n",
>            mytime, dow, month, tmp->tm_mday, tmp->tm_year + 1900,
>            tmp->tm_hour, tmp->tm_min, tmp->tm_sec, _tzname[tmp->tm_isdst
!=
> 0],
>            tmp->tm_yday);
>     return;
>
> }
>
> =========================================================================
>
> From: "Richard M. Smith"
> Subject: MFC and the April Fools 2001 bug
> Date: 18 Jan 1999 00:00:00 GMT
> Newsgroups: microsoft.public.vc.mfc,microsoft.public.vc.language
>
> Hello,
>
> A couple of weeks ago I reported a serious bug to Microsoft
> with the localtime() function of the C runtime library.  This
> bug will cause many Windows applications to show the incorrect
> time of day starting on April 1, 2001.  The bug will last for one
> week.  The bug is due to the Visual C++ runtime library being confused
> about the start date for daylight saving time.  Microsoft has
> confirmed the bug and is currently working on a fix.
>
> Today I did more research on the bug and found that bug is also
> present in the MFC library.  In particular, the two MFC classes
> for dealing with times and dates, CTime and COleDateTime,  both
> have the bug.  The reason that both classes have the bug because
> they call the broken localtime() function as well as mktime()
> which I discovered today also has the bug.
>
> I located the April Fools 2001 bug in MFC by first searching
> the MFC source code for calls to localtime() and mktime().  I then
> confirmed these bugs by building a short C++ test program that uses
> CTime and ColeDateTime classes.  This test program displayed the
> wrong times when I moved my Windows clock forward to April 1, 2001.
>
> Here are the member functions of MFC which have the "April Fools
> 2001" bug:
>
>    CTime::CTime
>    CTime::GetCurrentTime
>    CTime::GetLocalTm
>    CTime::GetHour
>    CTime::GetDay
>    CTime::GetDayOfWeek
>    CTime::Format
>
>    COleDateTime::COleDateTime        (with a time_t argument only)
>    COleDateTime::GetCurrentTime
>
> The following MFC classes also make use of CTime class so they will
> likely hit the "April Fools 2001" bug when dealing with times and dates:
>
>    CTimeSpan
>    CFileFind
>    CFile
>    CGopherFileFind
>    COleStreamFile
>    CDateTimeCtrl
>    CMonthCalCtrl
>
> The C runtime functions with the bug are:
>
>    ctime
>    localtime
>    mktime
>    _strtime
>    _strdate
>
> Microsoft has created a Web page for news about the April Fools 2001 bug.
> The URL of the page is:
>
>     http://msdn.microsoft.com/visualc/headlines/2001.asp
>
> Richard M. Smith



================================================================================
     To unsubscribe from this mailing list, please see the instructions at
               http://www.checkpoint.com/services/mailing.html
================================================================================



 
----------------------------------

ABOUT SERVICES PRODUCTS TRAINING CONTACT US SEARCH SUPPORT SITE MAP LEGAL
   All contents © 2004 Network Presence, LLC. All rights reserved.