From 82d1c6b310eaa5095eed9ee4ea958261a46a78e1 Mon Sep 17 00:00:00 2001 From: Chase Douglas Date: Fri, 6 Apr 2012 08:32:28 -0700 Subject: [PATCH] Warn when attempting to log in a signal unsafe manner from signal context Also, print out the offending message format. This will hopefully help developers track down unsafe logging. Signed-off-by: Chase Douglas Reviewed-by: Peter Hutterer Signed-off-by: Peter Hutterer --- os/log.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/os/log.c b/os/log.c index 47ba34876..25da9f63a 100644 --- a/os/log.c +++ b/os/log.c @@ -463,6 +463,16 @@ LogVMessageVerb(MessageType type, int verb, const char *format, va_list args) Bool newline; size_t len = 0; + if (inSignalContext) { + BUG_WARN_MSG(inSignalContext, + "Warning: attempting to log data in a signal unsafe " + "manner while in signal context. Please update to check " + "inSignalContext and/or use LogMessageVerbSigSafe() or " + "ErrorFSigSafe(). The offending log format message is:\n" + "%s\n", format); + return; + } + type_str = LogMessageTypeVerbString(type, verb); if (!type_str) return; @@ -552,6 +562,16 @@ LogVHdrMessageVerb(MessageType type, int verb, const char *msg_format, Bool newline; size_t len = 0; + if (inSignalContext) { + BUG_WARN_MSG(inSignalContext, + "Warning: attempting to log data in a signal unsafe " + "manner while in signal context. Please update to check " + "inSignalContext and/or use LogMessageVerbSigSafe(). The " + "offending header and log message formats are:\n%s %s\n", + hdr_format, msg_format); + return; + } + type_str = LogMessageTypeVerbString(type, verb); if (!type_str) return;