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 <chase.douglas@canonical.com>
Reviewed-by: Peter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
This commit is contained in:
Chase Douglas 2012-04-06 08:32:28 -07:00 committed by Keith Packard
parent 512bec06be
commit 82d1c6b310

View File

@ -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;