diff --git a/src/common/log.c b/src/common/log.c
index 509740a303cff3ec3063bd52aeb47b859c503312..2e2d883549e09f2a32dfc7a97b6f4a088fbc1495 100644
--- a/src/common/log.c
+++ b/src/common/log.c
@@ -321,7 +321,7 @@ static void log_msg(log_level_t level, const char *fmt, va_list args)
 
 	if (level <= STDERR_LEVEL) {
 		fflush(stdout);
-		if (buf[strlen(buf) - 1] == '\n')
+		if (strlen(buf) > 0 && buf[strlen(buf) - 1] == '\n')
 			fprintf(stderr, "%s: %s%s", log->argv0, pfx, buf);
 		else
 			fprintf(stderr, "%s: %s%s\n", log->argv0, pfx, buf);
@@ -331,7 +331,7 @@ static void log_msg(log_level_t level, const char *fmt, va_list args)
 	if (level <= LOGFILE_LEVEL && log->logfp != NULL) {
 		xstrfmtcat(&msgbuf, "[%T] %s%s", pfx, buf);
 
-		if (buf[strlen(buf) - 1] == '\n')
+		if (strlen(buf) > 0 && buf[strlen(buf) - 1] == '\n')
 			fprintf(log->logfp, "%s", msgbuf);
 		else
 			fprintf(log->logfp, "%s\n", msgbuf);