diff options
-rw-r--r-- | os/log.c | 1 | ||||
-rw-r--r-- | test/signal-logging.c | 7 |
2 files changed, 8 insertions, 0 deletions
@@ -461,6 +461,7 @@ pnprintf(char *string, size_t size, const char *f, va_list args) string[s_idx++] = '%'; break; default: + BUG_WARN_MSG(f[f_idx], "Unsupported printf directive '%c'\n", f[f_idx]); va_arg(args, char*); string[s_idx++] = '%'; if (s_idx < size - 1) diff --git a/test/signal-logging.c b/test/signal-logging.c index b45d8d4f3..f6bc85ce8 100644 --- a/test/signal-logging.c +++ b/test/signal-logging.c @@ -206,6 +206,13 @@ static void logging_format(void) read_log_msg(logmsg); assert(strcmp(logmsg, "(EE) test a\n") == 0); + /* something unsupported % */ + LogMessageVerbSigSafe(X_ERROR, -1, "test %Q\n"); + read_log_msg(logmsg); + assert(strstr(logmsg, "BUG") != NULL); + LogMessageVerbSigSafe(X_ERROR, -1, "\n"); + fseek(f, 0, SEEK_END); + /* string substitution */ LogMessageVerbSigSafe(X_ERROR, -1, "%s\n", "substituted string"); read_log_msg(logmsg); |