summaryrefslogtreecommitdiff
path: root/vsprintf.c
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2013-03-05 17:29:18 +0100
committerDenys Vlasenko <vda.linux@googlemail.com>2013-03-05 17:29:18 +0100
commitdafba9bb99ecee458fc7f6cd37151ae1c91ae522 (patch)
treecd6c4ecf22d227babaeda9369c03b64151b6e2d9 /vsprintf.c
parentc76a363af8bfc7b83558253fae38ae3d255e0aa9 (diff)
downloadstrace-dafba9bb99ecee458fc7f6cd37151ae1c91ae522.tar.gz
strace-dafba9bb99ecee458fc7f6cd37151ae1c91ae522.tar.bz2
strace-dafba9bb99ecee458fc7f6cd37151ae1c91ae522.tar.xz
strace_vfprintf: if malloc fails, exit gracefully
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
Diffstat (limited to 'vsprintf.c')
-rw-r--r--vsprintf.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/vsprintf.c b/vsprintf.c
index b66609a..f6019f0 100644
--- a/vsprintf.c
+++ b/vsprintf.c
@@ -759,8 +759,8 @@ int kernel_vsnprintf(char *buf, size_t size, const char *fmt, va_list args)
int strace_vfprintf(FILE *fp, const char *fmt, va_list args)
{
- static char *buf;
- static unsigned buflen;
+ static char *buf = NULL;
+ static unsigned buflen = 0;
int r;
va_list a1;
@@ -773,6 +773,8 @@ int strace_vfprintf(FILE *fp, const char *fmt, va_list args)
buflen = len + 256;
free(buf);
buf = malloc(buflen);
+ if (!buf)
+ die_out_of_memory();
/*len =*/ kernel_vsnprintf(buf, buflen, fmt, args);
}