]> git.ipfire.org Git - thirdparty/dracut.git/commitdiff
fix(install): validate return values log.c
authorShreenidhi Shedi <sshedi@vmware.com>
Sun, 8 Aug 2021 18:56:23 +0000 (00:26 +0530)
committerJóhann B. Guðmundsson <johannbg@gmail.com>
Mon, 9 Aug 2021 17:11:22 +0000 (17:11 +0000)
Signed-off-by: Shreenidhi Shedi <sshedi@vmware.com>
src/install/log.c

index 3f77b5a5c15ba682cae59b83463e242ee5b03a53..f5ba54e56135f06ca1a9b346c4902b37a044da22 100644 (file)
@@ -167,20 +167,25 @@ static int log_dispatch(int level, const char *file, unsigned int line, const ch
 
 int log_metav(int level, const char *file, unsigned int line, const char *func, const char *format, va_list ap)
 {
-
-        char buffer[LINE_MAX];
+        char buffer[LINE_MAX] = {0};
         int saved_errno, r;
 
         if (_likely_(LOG_PRI(level) > log_max_level))
                 return 0;
 
         saved_errno = errno;
-        vsnprintf(buffer, sizeof(buffer), format, ap);
+
+        r = vsnprintf(buffer, sizeof(buffer), format, ap);
+        if (r <= 0) {
+                goto end;
+        }
+
         char_array_0(buffer);
 
         r = log_dispatch(level, file, line, func, buffer);
-        errno = saved_errno;
 
+end:
+        errno = saved_errno;
         return r;
 }
 
@@ -204,12 +209,12 @@ _noreturn_ static void log_assert(const char *text, const char *file, unsigned i
 {
         static char buffer[LINE_MAX];
 
-        snprintf(buffer, sizeof(buffer), format, text, file, line, func);
-
-        char_array_0(buffer);
-        log_abort_msg = buffer;
+        if (snprintf(buffer, sizeof(buffer), format, text, file, line, func) > 0) {
+                char_array_0(buffer);
+                log_abort_msg = buffer;
+                log_dispatch(LOG_CRIT, file, line, func, buffer);
+        }
 
-        log_dispatch(LOG_CRIT, file, line, func, buffer);
         abort();
 }