From 515082102e08250f13df90426b80d58221f0636e Mon Sep 17 00:00:00 2001 From: Kailun Qin Date: Sat, 14 Aug 2021 04:15:45 -0400 Subject: [PATCH] libct/nsenter: nullify pointer on asprintf error The contents of the pointer returned on asprintf() error are undefined i.e., it can be anything there. We set it to NULL on error so that free() afterwards won't get a garbage pointer. This patch applies the above to message and stage as well to be consistent with what we do for json. Signed-off-by: Kailun Qin --- libcontainer/nsenter/nsexec.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/libcontainer/nsenter/nsexec.c b/libcontainer/nsenter/nsexec.c index ee7b75b1e..46a49db95 100644 --- a/libcontainer/nsenter/nsexec.c +++ b/libcontainer/nsenter/nsexec.c @@ -146,8 +146,10 @@ static void write_log(const char *level, const char *format, ...) va_start(args, format); ret = vasprintf(&message, format, args); va_end(args); - if (ret < 0) + if (ret < 0) { + message = NULL; goto out; + } message = escape_json_string(message); @@ -155,8 +157,10 @@ static void write_log(const char *level, const char *format, ...) stage = strdup("nsexec"); else ret = asprintf(&stage, "nsexec-%d", current_stage); - if (ret < 0) + if (ret < 0) { + stage = NULL; goto out; + } ret = asprintf(&json, "{\"level\":\"%s\", \"msg\": \"%s[%d]: %s\"}\n", level, stage, getpid(), message); if (ret < 0) {