Also, print out the offending message format. This will hopefully help developers track down unsafe logging.
Signed-off-by: Chase Douglas <[email protected]> --- os/log.c | 15 +++++++++++++++ 1 files changed, 15 insertions(+), 0 deletions(-) diff --git a/os/log.c b/os/log.c index 840439a..88ab1d7 100644 --- a/os/log.c +++ b/os/log.c @@ -288,6 +288,21 @@ LogVWrite(int verb, const char *f, va_list args) int len = 0; static Bool newline = TRUE; + if (inSignalContext) { + static const char warning[] = "Warning: attempting to log data in a " + "signal unsafe manner while in signal " + "context. Please update to use " + "xf86InSignalContext() and/or " + "LogMessageVerbSigSafe(). The offending " + "log format message is:\n"; + + write(logFileFd, warning, sizeof(warning) - 1); + + write(logFileFd, f, strlen_sigsafe(f)); + + return; + } + if (newline) { sprintf(tmpBuffer, "[%10.3f] ", GetTimeInMillis() / 1000.0); len = strlen(tmpBuffer); -- 1.7.9.1 _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
