From: Bruno Haible Date: Sun, 21 Jan 2007 22:18:23 +0000 (+0000) Subject: Ensure errno when strdup fails. X-Git-Tag: cvs-readonly~1301 X-Git-Url: http://erislabs.org.uk/gitweb/?a=commitdiff_plain;h=ec32a9f497d23fc1d7c7e0847ec008ca5a8bb299;p=gnulib.git Ensure errno when strdup fails. --- diff --git a/ChangeLog b/ChangeLog index 856cdf86c..8996bd0b0 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2007-01-21 Bruno Haible + * lib/striconv.c (str_iconv): Guarantee errno is set when strdup fails. + * lib/striconveh.c (str_iconveh): Likewise. + +2007-01-21 Bruno Haible + * lib/striconveh.h (mem_iconveh): New declaration. * lib/striconveh.c (mem_iconveh): New function. * tests/test-striconveh.c (main): Add tests for mem_iconveh. diff --git a/lib/striconv.c b/lib/striconv.c index b2490a750..7c4f549cf 100644 --- a/lib/striconv.c +++ b/lib/striconv.c @@ -398,7 +398,13 @@ char * str_iconv (const char *src, const char *from_codeset, const char *to_codeset) { if (c_strcasecmp (from_codeset, to_codeset) == 0) - return strdup (src); + { + char *result = strdup (src); + + if (result == NULL) + errno = ENOMEM; + return result; + } else { #if HAVE_ICONV diff --git a/lib/striconveh.c b/lib/striconveh.c index c27ef98eb..235e60635 100644 --- a/lib/striconveh.c +++ b/lib/striconveh.c @@ -920,7 +920,13 @@ str_iconveh (const char *src, enum iconv_ilseq_handler handler) { if (c_strcasecmp (from_codeset, to_codeset) == 0) - return strdup (src); + { + char *result = strdup (src); + + if (result == NULL) + errno = ENOMEM; + return result; + } else { #if HAVE_ICONV