Christopher R. Palmer fixed the offsets used for date parsings when the time
authorDaniel Stenberg <daniel@haxx.se>
Tue, 9 Aug 2005 21:59:31 +0000 (21:59 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 9 Aug 2005 21:59:31 +0000 (21:59 +0000)
zone name of a daylight savings time was used. For example, PDT vs PDS. This
flaw was introduced with the new date parser (11 sep 2004 - 7.12.2).
Fortunately, no web server or cookie string etc should be using such time
zone names thus limiting the effect of this bug.

CHANGES
RELEASE-NOTES
lib/parsedate.c

diff --git a/CHANGES b/CHANGES
index ab0ba5d..f68605b 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -7,6 +7,13 @@
                                   Changelog
 
 
+Daniel (9 August 2005)
+- Christopher R. Palmer fixed the offsets used for date parsings when the time
+  zone name of a daylight savings time was used. For example, PDT vs PDS. This
+  flaw was introduced with the new date parser (11 sep 2004 - 7.12.2).
+  Fortunately, no web server or cookie string etc should be using such time
+  zone names thus limiting the effect of this bug.
+
 Daniel (8 August 2005)
 - Jon Grubbs filed bug report #1249962 which identified a problem with NTLM on
   a HTTP proxy if an FTP URL was given. libcurl now properly switches to pure
index b6a02ff..dd00a58 100644 (file)
@@ -18,6 +18,7 @@ This release includes the following changes:
 
 This release includes the following bugfixes:
 
+ o date parsing of dates including daylight savings time zone names
  o using NTLM over proxy with an FTP URL
  o curl-config --features now displays SSL when built with GnuTLS too
  o CURLOPT_HTTPGET, CURLOPT_POST and CURLOPT_HTTPPOST reset CURLOPT_NOBODY
@@ -51,6 +52,7 @@ advice from friends like these:
 
  John McGowan, Georg Wicherski, Andres Garcia, Eric Cooper, Todd Kulesza,
  Tupone Alfredo, Gisle Vanem, David Shaw, Andrew Bushnell, Dan Fandrich,
- Adrian Schuur, Diego Casorran, Peteris Krumins, Jon Grubbs
+ Adrian Schuur, Diego Casorran, Peteris Krumins, Jon Grubbs, Christopher
+ R. Palmer
 
         Thanks! (and sorry if I forgot to mention someone)
index ae9e232..caf38a2 100644 (file)
@@ -102,50 +102,51 @@ struct tzinfo {
 
 /* Here's a bunch of frequently used time zone names. These were supported
    by the old getdate parser. */
+#define tDAYZONE -60       /* offset for daylight savings time */
 static const struct tzinfo tz[]= {
-  {"GMT", 0},     /* Greenwich Mean */
-  {"UTC", 0},     /* Universal (Coordinated) */
-  {"WET", 0},     /* Western European */
-  {"BST", 0},     /* British Summer */
-  {"WAT", 60},    /* West Africa */
-  {"AST", 240},   /* Atlantic Standard */
-  {"ADT", 240},   /* Atlantic Daylight */
-  {"EST", 300},   /* Eastern Standard */
-  {"EDT", 300},   /* Eastern Daylight */
-  {"CST", 360},   /* Central Standard */
-  {"CDT", 360},   /* Central Daylight */
-  {"MST", 420},   /* Mountain Standard */
-  {"MDT", 420},   /* Mountain Daylight */
-  {"PST", 480},   /* Pacific Standard */
-  {"PDT", 480},   /* Pacific Daylight */
-  {"YST", 540},   /* Yukon Standard */
-  {"YDT", 540},   /* Yukon Daylight */
-  {"HST", 600},   /* Hawaii Standard */
-  {"HDT", 600},   /* Hawaii Daylight */
-  {"CAT", 600},   /* Central Alaska */
-  {"AHST", 600},  /* Alaska-Hawaii Standard */
-  {"NT",  660},   /* Nome */
-  {"IDLW", 720},  /* International Date Line West */
-  {"CET", -60},   /* Central European */
-  {"MET", -60},   /* Middle European */
-  {"MEWT", -60},  /* Middle European Winter */
-  {"MEST", -120}, /* Middle European Summer */
-  {"CEST", -120}, /* Central European Summer */
-  {"MESZ", -60},  /* Middle European Summer */
-  {"FWT", -60},   /* French Winter */
-  {"FST", -60},   /* French Summer */
-  {"EET", -120},  /* Eastern Europe, USSR Zone 1 */
-  {"WAST", -420}, /* West Australian Standard */
-  {"WADT", -420}, /* West Australian Daylight */
-  {"CCT", -480},  /* China Coast, USSR Zone 7 */
-  {"JST", -540},  /* Japan Standard, USSR Zone 8 */
-  {"EAST", -600}, /* Eastern Australian Standard */
-  {"EADT", -600}, /* Eastern Australian Daylight */
-  {"GST", -600},  /* Guam Standard, USSR Zone 9 */
-  {"NZT", -720},  /* New Zealand */
-  {"NZST", -720}, /* New Zealand Standard */
-  {"NZDT", -720}, /* New Zealand Daylight */
-  {"IDLE", -720}, /* International Date Line East */
+  {"GMT", 0},              /* Greenwich Mean */
+  {"UTC", 0},              /* Universal (Coordinated) */
+  {"WET", 0},              /* Western European */
+  {"BST", 0 tDAYZONE},     /* British Summer */
+  {"WAT", 60},             /* West Africa */
+  {"AST", 240},            /* Atlantic Standard */
+  {"ADT", 240 tDAYZONE},   /* Atlantic Daylight */
+  {"EST", 300},            /* Eastern Standard */
+  {"EDT", 300 tDAYZONE},   /* Eastern Daylight */
+  {"CST", 360},            /* Central Standard */
+  {"CDT", 360 tDAYZONE},   /* Central Daylight */
+  {"MST", 420},            /* Mountain Standard */
+  {"MDT", 420 tDAYZONE},   /* Mountain Daylight */
+  {"PST", 480},            /* Pacific Standard */
+  {"PDT", 480 tDAYZONE},   /* Pacific Daylight */
+  {"YST", 540},            /* Yukon Standard */
+  {"YDT", 540 tDAYZONE},   /* Yukon Daylight */
+  {"HST", 600},            /* Hawaii Standard */
+  {"HDT", 600 tDAYZONE},   /* Hawaii Daylight */
+  {"CAT", 600},            /* Central Alaska */
+  {"AHST", 600},           /* Alaska-Hawaii Standard */
+  {"NT",  660},            /* Nome */
+  {"IDLW", 720},           /* International Date Line West */
+  {"CET", -60},            /* Central European */
+  {"MET", -60},            /* Middle European */
+  {"MEWT", -60},           /* Middle European Winter */
+  {"MEST", -120 tDAYZONE}, /* Middle European Summer */
+  {"CEST", -120 tDAYZONE}, /* Central European Summer */
+  {"MESZ", -60 tDAYZONE},  /* Middle European Summer */
+  {"FWT", -60},            /* French Winter */
+  {"FST", -60 tDAYZONE},   /* French Summer */
+  {"EET", -120},           /* Eastern Europe, USSR Zone 1 */
+  {"WAST", -420},          /* West Australian Standard */
+  {"WADT", -420 tDAYZONE}, /* West Australian Daylight */
+  {"CCT", -480},           /* China Coast, USSR Zone 7 */
+  {"JST", -540},           /* Japan Standard, USSR Zone 8 */
+  {"EAST", -600},          /* Eastern Australian Standard */
+  {"EADT", -600 tDAYZONE}, /* Eastern Australian Daylight */
+  {"GST", -600},           /* Guam Standard, USSR Zone 9 */
+  {"NZT", -720},           /* New Zealand */
+  {"NZST", -720},          /* New Zealand Standard */
+  {"NZDT", -720 tDAYZONE}, /* New Zealand Daylight */
+  {"IDLE", -720},          /* International Date Line East */
 };
 
 /* returns: