]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
log: check for i/o error with vsnprintf()
authorChristian Brauner <christian.brauner@ubuntu.com>
Tue, 31 Oct 2017 11:05:13 +0000 (12:05 +0100)
committerChristian Brauner <christian.brauner@ubuntu.com>
Thu, 9 Nov 2017 00:22:38 +0000 (01:22 +0100)
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
src/lxc/log.c

index 2668015e782fb506227e6d846fcbedc8080d8f4e..e7e77ff85d5d49014c8c15f85f6c5e45c1e53641 100644 (file)
@@ -197,7 +197,7 @@ static int log_append_logfile(const struct lxc_log_appender *appender,
 {
        char buffer[LXC_LOG_BUFFER_SIZE];
        char date_time[LXC_LOG_TIME_SIZE];
-       int n;
+       int n, ret;
        int fd_to_use = -1;
 
 #ifndef NO_LXC_CONF
@@ -226,8 +226,13 @@ static int log_append_logfile(const struct lxc_log_appender *appender,
        if (n < 0)
                return n;
 
-       if ((size_t)n < (sizeof(buffer) - 1))
-               n += vsnprintf(buffer + n, sizeof(buffer) - n, event->fmt, *event->vap);
+       if ((size_t)n < (sizeof(buffer) - 1)) {
+               ret = vsnprintf(buffer + n, sizeof(buffer) - n, event->fmt, *event->vap);
+               if (ret < 0)
+                       return 0;
+
+               n += ret;
+       }
 
        if ((size_t)n >= sizeof(buffer))
                n = sizeof(buffer) - 1;