From: Denys Vlasenko Date: Thu, 7 Feb 2013 15:06:54 +0000 (+0100) Subject: vasprintf: do not use xmalloc, it will deadlock on OOM X-Git-Tag: 1_22_0~301 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=b5fc51198bf451885e6411bae9b25890a5b6fbe2;p=oweals%2Fbusybox.git vasprintf: do not use xmalloc, it will deadlock on OOM Signed-off-by: Denys Vlasenko --- diff --git a/libbb/platform.c b/libbb/platform.c index 2bf34f5bc..d241d25a7 100644 --- a/libbb/platform.c +++ b/libbb/platform.c @@ -28,14 +28,16 @@ int FAST_FUNC vasprintf(char **string_ptr, const char *format, va_list p) r = vsnprintf(buf, 128, format, p); va_end(p); + /* Note: can't use xstrdup/xmalloc, they call vasprintf (us) on failure! */ + if (r < 128) { va_end(p2); - *string_ptr = xstrdup(buf); + *string_ptr = strdup(buf); return r; } - *string_ptr = xmalloc(r+1); - r = vsnprintf(*string_ptr, r+1, format, p2); + *string_ptr = malloc(r+1); + r = (*string_ptr ? vsnprintf(*string_ptr, r+1, format, p2) : -1); va_end(p2); return r;