aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2010-02-13 23:27:12 +0000
committerMike Frysinger <vapier@gentoo.org>2010-02-13 23:27:12 +0000
commitbc630d0f56d047901791fbcc1d14b535d7ec6dfd (patch)
tree3fa1fe21cee8c9a9a900af0b87e07f2dd19d1a80 /xfuncs.c
parentuse %zu for size_t instead of casting to random long types (diff)
downloadpax-utils-bc630d0f56d047901791fbcc1d14b535d7ec6dfd.tar.gz
pax-utils-bc630d0f56d047901791fbcc1d14b535d7ec6dfd.tar.bz2
pax-utils-bc630d0f56d047901791fbcc1d14b535d7ec6dfd.zip
make sure we initialize new string memory
Diffstat (limited to 'xfuncs.c')
-rw-r--r--xfuncs.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/xfuncs.c b/xfuncs.c
index 4f5c451..cd8232d 100644
--- a/xfuncs.c
+++ b/xfuncs.c
@@ -1,7 +1,7 @@
/*
* Copyright 2003-2007 Gentoo Foundation
* Distributed under the terms of the GNU General Public License v2
- * $Header: /var/cvsroot/gentoo-projects/pax-utils/xfuncs.c,v 1.8 2010/02/13 23:17:45 vapier Exp $
+ * $Header: /var/cvsroot/gentoo-projects/pax-utils/xfuncs.c,v 1.9 2010/02/13 23:27:12 vapier Exp $
*
* Copyright 2003-2007 Ned Ludd - <solar@gentoo.org>
* Copyright 2004-2007 Mike Frysinger - <vapier@gentoo.org>
@@ -37,14 +37,18 @@ void *xrealloc(void *ptr, size_t size)
void xstrncat(char **dst, const char *src, size_t *curr_len, size_t n)
{
+ bool init;
size_t new_len;
- new_len = (*curr_len ? strlen(*dst) : 0) + strlen(src);
+ init = *curr_len ? false : true;
+ new_len = (init ? 0 : strlen(*dst)) + strlen(src);
if (*curr_len <= new_len) {
- *curr_len = new_len + (*curr_len / 2);
+ *curr_len = new_len + (*curr_len / 2) + 1;
*dst = realloc(*dst, *curr_len);
if (!*dst)
err("could not realloc() %zu bytes", *curr_len);
+ if (init)
+ *dst[0] = '\0';
}
if (n)