From 6c157a404b3b0d2e6659fde92f498c7c5608ac61 Mon Sep 17 00:00:00 2001 From: Daniel Stenberg Date: Tue, 9 Aug 2005 21:59:31 +0000 Subject: [PATCH] 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. --- CHANGES | 7 ++++ RELEASE-NOTES | 4 ++- lib/parsedate.c | 87 +++++++++++++++++++++++++------------------------ 3 files changed, 54 insertions(+), 44 deletions(-) diff --git a/CHANGES b/CHANGES index ab0ba5d24..f68605bf1 100644 --- 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 diff --git a/RELEASE-NOTES b/RELEASE-NOTES index b6a02ffea..dd00a5845 100644 --- a/RELEASE-NOTES +++ b/RELEASE-NOTES @@ -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) diff --git a/lib/parsedate.c b/lib/parsedate.c index ae9e232a9..caf38a2ca 100644 --- a/lib/parsedate.c +++ b/lib/parsedate.c @@ -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: