- Stephen Collyer and Tor Arntsen helped identify a flaw in the range code
authorDaniel Stenberg <daniel@haxx.se>
Mon, 30 Jun 2008 13:07:05 +0000 (13:07 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Mon, 30 Jun 2008 13:07:05 +0000 (13:07 +0000)
  which output the range using a signed variable where it should rather use
  unsigned.

CHANGES
RELEASE-NOTES
lib/setup.h
lib/url.c

diff --git a/CHANGES b/CHANGES
index 1f6a3d8..5e65381 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,6 +6,13 @@
 
                                   Changelog
 
+Daniel Stenberg (30 Jun 2008)
+- Made the internal printf() support %llu properly to print unsigned long longs.
+
+- Stephen Collyer and Tor Arntsen helped identify a flaw in the range code
+  which output the range using a signed variable where it should rather use
+  unsigned.
+
 Yang Tse (29 Jun 2008)
 - John Lightsey filed bug report #1999181: "CLOCK_MONOTONIC always fails on
   some systems" (http://curl.haxx.se/bug/view.cgi?id=1999181). The problem was
index 1320f75..01ef664 100644 (file)
@@ -26,6 +26,7 @@ This release includes the following bugfixes:
  o RC4-MD5 cipher now works with NSS-built libcurl
  o range requests with --head are now done correctly
  o configure script misdetected monotonic clock availability
+ o range numbers could be made to wrongly get output as signed
 
 This release includes the following known bugs:
 
@@ -44,6 +45,7 @@ advice from friends like these:
 
  Lenny Rachitsky, Axel Tillequin, Arnaud Ebalard, Yang Tse, Dan Fandrich,
  Rob Crittenden, Dengminwen, Christopher Palow, Hans-Jurgen May,
- Phil Pellouchoud, Eduard Bloch, John Lightsey
+ Phil Pellouchoud, Eduard Bloch, John Lightsey, Stephen Collyer, Tor Arntsen
+
 
         Thanks! (and sorry if I forgot to mention someone)
index 38ae320..1f8505d 100644 (file)
@@ -7,7 +7,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
 
 #ifndef SIZEOF_CURL_OFF_T
 /* If we don't know the size here, we assume a conservative size: 4. When
-   building libcurl, the actual size of this variable should be define in the
+   building libcurl, the actual size of this variable should be defined in the
    config*.h file. */
 #define SIZEOF_CURL_OFF_T 4
 #endif
 
-/* We set up our internal prefered (CURL_)FORMAT_OFF_T here */
+/* We set up our internal prefered (CURL_)FORMAT_OFF_T[U] here */
 #if SIZEOF_CURL_OFF_T > 4
 #define FORMAT_OFF_T "lld"
+#define FORMAT_OFF_TU "llu" /* the unsigned version */
 #else
 #define FORMAT_OFF_T "ld"
+#define FORMAT_OFF_TU "lu" /* thus unsigned version */
 #endif /* SIZEOF_CURL_OFF_T */
 
 #ifndef _REENTRANT
index e61ec29..f1f0c3c 100644 (file)
--- a/lib/url.c
+++ b/lib/url.c
@@ -3118,7 +3118,7 @@ static CURLcode setup_range(struct SessionHandle *data)
       free(s->range);
 
     if(s->resume_from)
-      s->range = aprintf("%" FORMAT_OFF_T "-", s->resume_from);
+      s->range = aprintf("%" FORMAT_OFF_TU "-", s->resume_from);
     else
       s->range = strdup(data->set.str[STRING_SET_RANGE]);