Jeff Johnson filed bug report #1863171
authorDaniel Stenberg <daniel@haxx.se>
Sun, 6 Jan 2008 10:50:57 +0000 (10:50 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Sun, 6 Jan 2008 10:50:57 +0000 (10:50 +0000)
(http://curl.haxx.se/bug/view.cgi?id=1863171) where he pointed out that
libcurl's date parser didn't accept a +1300 time zone which actually is used
fairly often (like New Zealand's Dailight Savings Time), so I modified the
parser to now accept up to and including -1400 to +1400.

CHANGES
RELEASE-NOTES
lib/parsedate.c

diff --git a/CHANGES b/CHANGES
index 30d312a..e7465d8 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,13 @@
 
                                   Changelog
 
+Daniel S (6 Jan 2008)
+- Jeff Johnson filed bug report #1863171
+  (http://curl.haxx.se/bug/view.cgi?id=1863171) where he pointed out that
+  libcurl's date parser didn't accept a +1300 time zone which actually is used
+  fairly often (like New Zealand's Dailight Savings Time), so I modified the
+  parser to now accept up to and including -1400 to +1400.
+
 Daniel S (5 Jan 2008)
 - Based on further discussion on curl-library, I reverted yesterday's SOCKS5
   code to instead introduce support for a new proxy type called
index 0eb8520..3262105 100644 (file)
@@ -44,6 +44,7 @@ This release includes the following bugfixes:
  o bad connection re-use check with environment variable-activated proxy use
  o --libcurl now generates a return statement as well
  o socklen_t is no longer used in the public includes
+ o time zone offsets from -1400 to +1400 are now accepted by the date parser
 
 This release includes the following known bugs:
 
@@ -66,6 +67,6 @@ advice from friends like these:
  Emil Romanus, Alessandro Vesely, Ray Pekowski, Spacen Jasset, Andrew Moise,
  Gilles Blanc, David Wright, Vikram Saxena, Mateusz Loskot, Gary Maxwell,
  Dmitry Kurochkin, Mohun Biswas, Richard Atterer, Maxim Perenesenko,
- Daniel Egger
+ Daniel Egger, Jeff Johnson
  
         Thanks! (and sorry if I forgot to mention someone)
index 0f0a186..78cc96f 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 1998 - 2007, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 1998 - 2008, Daniel Stenberg, <daniel@haxx.se>, et al.
  *
  * This software is licensed as described in the file COPYING, which
  * you should have received as part of this distribution. The terms
@@ -289,11 +289,17 @@ static time_t parsedate(const char *date)
 
         if((tzoff == -1) &&
            ((end - date) == 4) &&
-           (val < 1300) &&
+           (val <= 1400) &&
            (indate< date) &&
            ((date[-1] == '+' || date[-1] == '-'))) {
-          /* four digits and a value less than 1300 and it is preceeded with
-             a plus or minus. This is a time zone indication. */
+          /* four digits and a value less than or equal to 1400 (to take into
+             account all sorts of funny time zone diffs) and it is preceeded
+             with a plus or minus. This is a time zone indication.  1400 is
+             picked since +1300 is frequently used and +1400 is mentioned as
+             an edge number in the document "ISO C 200X Proposal: Timezone
+             Functions" at http://david.tribble.com/text/c0xtimezone.html If
+             anyone has a more authoritative source for the exact maximum time
+             zone offsets, please speak up! */
           found = TRUE;
           tzoff = (val/100 * 60 + val%100)*60;