libextractor

GNU libextractor
Log | Files | Refs | Submodules | README | LICENSE

commit 472ff2a23d74de49c82b8ff63e736e11ead55226
parent 6339d32c8ab40d11d8e86bf6ad155e4103819ade
Author: Christian Grothoff <christian@grothoff.org>
Date:   Tue, 30 Jun 2026 18:37:47 +0200

handle iconv failure better

Diffstat:
Msrc/common/convert.c | 6+++++-
1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/src/common/convert.c b/src/common/convert.c @@ -43,6 +43,7 @@ EXTRACTOR_common_convert_to_utf8 (const char *input, #if HAVE_ICONV size_t tmpSize; size_t finSize; + size_t inSize; char *tmp; char *ret; char *itmp; @@ -67,11 +68,12 @@ EXTRACTOR_common_convert_to_utf8 (const char *input, } itmp = tmp; finSize = tmpSize; + inSize = len; if (iconv (cd, (char **) &input, &len, &itmp, &finSize) == ((size_t) -1)) { iconv_close (cd); free (tmp); - return strndup (i, len); + return strndup (i, inSize); } ret = malloc (tmpSize - finSize + 1); if (ret == NULL) @@ -89,6 +91,8 @@ EXTRACTOR_common_convert_to_utf8 (const char *input, char *ret; ret = malloc (len + 1); + if (ret == NULL) + return NULL; memcpy (ret, input, len); ret[len] = '\0'; return ret;