From e5f2e5e5eb56c390c68c1ac79a32fb068510fc41 Mon Sep 17 00:00:00 2001 From: Peter Somogyi Date: Fri, 20 Apr 2007 14:26:19 +0200 Subject: - ctdb/ib minor bugfixes (error case) - make ctdb capable of alternative connection (like ib) again, solved the fork problem - do_debug memory overwrite bugfix (occured using ibwrapper_test with wrong address given) (This used to be ctdb commit da0b84cda26d544f63841dfd770ed7ebad401944) --- ctdb/lib/util/debug.c | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'ctdb/lib/util/debug.c') diff --git a/ctdb/lib/util/debug.c b/ctdb/lib/util/debug.c index a3229015ca..ffe1dcc382 100644 --- a/ctdb/lib/util/debug.c +++ b/ctdb/lib/util/debug.c @@ -22,6 +22,22 @@ #include "system/time.h" #include +static int vasprintf2(char **ptr, const char *format, va_list ap) +{ + int ret; + va_list tmp_ap; + + va_copy(tmp_ap, ap); + ret = vsnprintf(NULL, 0, format, tmp_ap); + if (ret <= 0) return ret; + + (*ptr) = (char *)malloc(ret+1); + if (!*ptr) return -1; + ret = vsnprintf(*ptr, ret+1, format, ap); + + return ret; +} + void do_debug(const char *format, ...) { struct timeval tm; @@ -29,7 +45,7 @@ void do_debug(const char *format, ...) char *s = NULL; va_start(ap, format); - vasprintf(&s, format, ap); + vasprintf2(&s, format, ap); va_end(ap); gettimeofday(&tm, NULL); -- cgit