mirror of
https://git.savannah.gnu.org/git/tar.git
synced 2026-08-31 13:17:07 +00:00
Fix double-free introduced by 577dc345
* src/utf8.c (utf8_convert): Don't store freed value in *output
This commit is contained in:
+4
-3
@@ -65,7 +65,7 @@ bool
|
||||
utf8_convert (bool to_utf, char const *input, char **output)
|
||||
{
|
||||
char ICONV_CONST *ib;
|
||||
char *ob;
|
||||
char *ob, *ret;
|
||||
size_t inlen;
|
||||
size_t outlen;
|
||||
iconv_t cd = utf8_init (to_utf);
|
||||
@@ -80,14 +80,15 @@ utf8_convert (bool to_utf, char const *input, char **output)
|
||||
|
||||
inlen = strlen (input) + 1;
|
||||
outlen = inlen * MB_LEN_MAX + 1;
|
||||
ob = *output = xmalloc (outlen);
|
||||
ob = ret = xmalloc (outlen);
|
||||
ib = (char ICONV_CONST *) input;
|
||||
if (iconv (cd, &ib, &inlen, &ob, &outlen) == -1)
|
||||
{
|
||||
free (*output);
|
||||
free (ret);
|
||||
return false;
|
||||
}
|
||||
*ob = 0;
|
||||
*output = ret;
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user