diff --git a/src/base/common.c b/src/base/common.c
index 3026d0fd205f2e8285445a2a2a0cd8a18d189ca5..3225f6c49be0b38c5a8706b39f2804165d95dff7 100644
--- a/src/base/common.c
+++ b/src/base/common.c
@@ -76,10 +76,19 @@ __lkt_log(enum log_level level, const char *section, const char *func, const cha
     if (level > __log_level)
         return;
 
-    safe_snprintf(line, LKT_MESSAGE_MAX, " %c [%02d:%02d:%02d] %-10s %s(%s+%ld): %s\n",
-                  level == ERROR ? '!' : level == WARN ? '*' : level == INFO ? '.' : ' ',
-                  hour, min, sec,
-                  section, func, file, line_number, format);
+    char c_level  = level == ERROR ? '!' : level == WARN ? '*' : level == INFO ? '.' : ' ';
+    ssize_t count = safe_snprintf(line, LKT_MESSAGE_MAX,
+                                  " %c [%02d:%02d:%02d] %-10s %s(%s+%ld): %s\n",
+                                  c_level, hour, min, sec, section, func, file,
+                                  line_number, format);
+    /* Check for overflow */
+    if (count >= LKT_MESSAGE_MAX - 1) {
+        line[LKT_MESSAGE_MAX - 1] = '\0';
+        line[LKT_MESSAGE_MAX - 2] = '\n';
+        line[LKT_MESSAGE_MAX - 3] = '.';
+        line[LKT_MESSAGE_MAX - 4] = '.';
+        line[LKT_MESSAGE_MAX - 5] = '.';
+    }
 
     va_start(ap, format);
     vfprintf(stderr, line, ap);