diff options
author | Mike Frysinger <vapier@gentoo.org> | 2010-02-13 23:27:12 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2010-02-13 23:27:12 +0000 |
commit | bc630d0f56d047901791fbcc1d14b535d7ec6dfd (patch) | |
tree | 3fa1fe21cee8c9a9a900af0b87e07f2dd19d1a80 /xfuncs.c | |
parent | use %zu for size_t instead of casting to random long types (diff) | |
download | pax-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.c | 10 |
1 files changed, 7 insertions, 3 deletions
@@ -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) |