diff --git a/libcontainer/nsenter/nsexec.c b/libcontainer/nsenter/nsexec.c index 49e8f54b6a4..ee7b75b1e5a 100644 --- a/libcontainer/nsenter/nsexec.c +++ b/libcontainer/nsenter/nsexec.c @@ -136,7 +136,7 @@ int setns(int fd, int nstype) static void write_log(const char *level, const char *format, ...) { - char *message = NULL, *stage = NULL; + char *message = NULL, *stage = NULL, *json = NULL; va_list args; int ret; @@ -158,11 +158,18 @@ static void write_log(const char *level, const char *format, ...) if (ret < 0) goto out; - dprintf(logfd, "{\"level\":\"%s\", \"msg\": \"%s[%d]: %s\"}\n", level, stage, getpid(), message); + ret = asprintf(&json, "{\"level\":\"%s\", \"msg\": \"%s[%d]: %s\"}\n", level, stage, getpid(), message); + if (ret < 0) { + json = NULL; + goto out; + } + + write(logfd, json, ret); out: free(message); free(stage); + free(json); } /* XXX: This is ugly. */