]> granicus.if.org Git - curl/commitdiff
Maciej Karpiuk fixed a crash that would occur if we passed Curl_strerror()
authorDaniel Stenberg <daniel@haxx.se>
Tue, 1 Aug 2006 09:39:01 +0000 (09:39 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 1 Aug 2006 09:39:01 +0000 (09:39 +0000)
an unknown error number on glibc systems.
http://curl.haxx.se/bug/view.cgi?id=1532289

CHANGES
RELEASE-NOTES
lib/strerror.c

diff --git a/CHANGES b/CHANGES
index 66a810baf2925bd95eb67a2e531f28df47c4e5b5..23e7ccbdbb48cb204414bc41028b882df3b7b9d1 100644 (file)
--- a/CHANGES
+++ b/CHANGES
@@ -6,8 +6,13 @@
 
                                   Changelog
 
+Daniel (1 August 2006)
+- Maciej Karpiuk fixed a crash that would occur if we passed Curl_strerror()
+  an unknown error number on glibc systems.
+  http://curl.haxx.se/bug/view.cgi?id=1532289
+
 Daniel (31 July 2006)
-- *ARLERT* curl_multi_socket() and curl_multi_socket_all() got modified
+- *ALERT* curl_multi_socket() and curl_multi_socket_all() got modified
   prototypes: they both now provide the number of running handles back to the
   calling function. It makes the functions resemble the good old
   curl_multi_perform() more and provides a nice way to know when the multi
index f6f28c366b2f4e81cdf86335dc93bb25a87014e7..99722ccc4cbe5262d3e6895216c4ddb3565ece83 100644 (file)
@@ -24,6 +24,7 @@ This release includes the following changes:
 
 This release includes the following bugfixes:
 
+ o Curl_strerror() crash on unknown errors
  o changing Content-Type when doing formposts
  o added CURL_EXTERN to a few recent multi functions that lacked them
  o splay-tree related problems for internal expire time handling
@@ -49,6 +50,7 @@ advice from friends like these:
 
  Dan Fandrich, Peter Silva, Arve Knudsen, Michael Wallner, Toshiyuki Maezawa,
  Ingmar Runge, Ates Goral, David McCreedy, Jari Sundell, Georg Horn,
- Gisle Vanem, Yang Tse, Michael Jerris, Dan Nelson, Yves Lejeune
+ Gisle Vanem, Yang Tse, Michael Jerris, Dan Nelson, Yves Lejeune,
+ Maciej Karpiuk
 
         Thanks! (and sorry if I forgot to mention someone)
index c730670c9fb3d8673b6f09acac962625318a826d..0309e4ff7f480763bf564c80a6a0295f6fa0fb2d 100644 (file)
@@ -5,7 +5,7 @@
  *                            | (__| |_| |  _ <| |___
  *                             \___|\___/|_| \_\_____|
  *
- * Copyright (C) 2004, 2006, Daniel Stenberg, <daniel@haxx.se>, et al.
+ * Copyright (C) 2004 - 2006, 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
@@ -637,8 +637,11 @@ const char *Curl_strerror(struct connectdata *conn, int err)
     char *msg = strerror_r(err, buffer, sizeof(buffer));
     /* this version of strerror_r() only *might* use the buffer we pass to
        the function, but it always returns the error message as a pointer,
-       so we must copy that string unconditionally */
-    strncpy(buf, msg, max);
+       so we must copy that string unconditionally (if non-NULL) */
+    if(msg)
+      strncpy(buf, msg, max);
+    else
+      snprintf(buf, max, "Unknown error %d", err);
   }
 #endif /* end of HAVE_GLIBC_STRERROR_R */
 #else /* HAVE_STRERROR_R */