aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKarel Zak <kzak@redhat.com>2016-10-04 16:14:48 +0200
committerKarel Zak <kzak@redhat.com>2016-10-04 16:14:48 +0200
commita86b9f252c9d04a23cee9422b4e03ab3d79e348b (patch)
tree15d9398bd31036effcf265cfd05f00f8c65da38c
parent2d1fa4fdc3302b50f0263604a46e00c7b88ecc24 (diff)
downloadutil-linux-a86b9f252c9d04a23cee9422b4e03ab3d79e348b.tar.gz
lib/mbsalign: free buffer after error [coverity scan]
Signed-off-by: Karel Zak <kzak@redhat.com>
-rw-r--r--lib/mbsalign.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/mbsalign.c b/lib/mbsalign.c
index c017ed1b3d..731320b074 100644
--- a/lib/mbsalign.c
+++ b/lib/mbsalign.c
@@ -206,15 +206,16 @@ size_t mbs_safe_encode_size(size_t bytes)
char *mbs_safe_encode(const char *s, size_t *width)
{
size_t sz = s ? strlen(s) : 0;
- char *buf;
+ char *buf, *ret = NULL;;
if (!sz)
return NULL;
buf = malloc(mbs_safe_encode_size(sz));
- if (!buf)
- return NULL;
-
- return mbs_safe_encode_to_buffer(s, width, buf, NULL);
+ if (buf)
+ ret = mbs_safe_encode_to_buffer(s, width, buf, NULL);
+ if (!ret)
+ free(buf);
+ return ret;
}
#ifdef HAVE_WIDECHAR