aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Stenberg <daniel@haxx.se>2006-08-01 09:39:01 +0000
committerDaniel Stenberg <daniel@haxx.se>2006-08-01 09:39:01 +0000
commitee642859ef04b9588e654ded629224fb0756f017 (patch)
tree43323831d452d1df07ab36520939c34927fc84c6
parent9f579f12fcda284c5b9f5dd8c1581fc5cd7fa8fb (diff)
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
-rw-r--r--CHANGES7
-rw-r--r--RELEASE-NOTES4
-rw-r--r--lib/strerror.c9
3 files changed, 15 insertions, 5 deletions
diff --git a/CHANGES b/CHANGES
index 66a810baf..23e7ccbdb 100644
--- 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
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
index f6f28c366..99722ccc4 100644
--- a/RELEASE-NOTES
+++ b/RELEASE-NOTES
@@ -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)
diff --git a/lib/strerror.c b/lib/strerror.c
index c730670c9..0309e4ff7 100644
--- a/lib/strerror.c
+++ b/lib/strerror.c
@@ -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 */