X-Git-Url: http://git.silcnet.org/gitweb/?p=silc.git;a=blobdiff_plain;f=lib%2Fsilcutil%2Fsilcbuffmt.c;h=a189c2903a7e145fb6ccc88ee9fbd31e4b4d298a;hp=4fffb7c34d87b7144f9007c921453c97b9e2dfe0;hb=ecb19b3983b3e74bc4aaa82277abd125c53c3623;hpb=382d15d447b7a95390decfa783836ae4fe255b3d diff --git a/lib/silcutil/silcbuffmt.c b/lib/silcutil/silcbuffmt.c index 4fffb7c3..a189c290 100644 --- a/lib/silcutil/silcbuffmt.c +++ b/lib/silcutil/silcbuffmt.c @@ -532,9 +532,12 @@ int silc_buffer_strformat(SilcBuffer dst, ...) goto ok; dst->head = silc_realloc(dst->head, sizeof(*dst->head) * - (strlen(string) + len)); + (strlen(string) + len + 1)); + if (!dst->head) + return -1; memcpy(dst->head + len, string, strlen(string)); len += strlen(string); + dst->head[len] = '\0'; } SILC_LOG_DEBUG(("Error occured while formatting buffer")); @@ -543,9 +546,9 @@ int silc_buffer_strformat(SilcBuffer dst, ...) ok: dst->end = dst->head + len; - dst->tail = dst->data = dst->end; - dst->len = 0; - dst->truelen = len; + dst->data = dst->head; + dst->tail = dst->end; + dst->len = dst->truelen = len; va_end(va); return len;