mirror of
https://github.com/unrealircd/unrealircd.git
synced 2026-07-05 07:13:14 +02:00
When unreal_log() was called incorrectly and wanted to print a BUG
error message about this it crashed. Can't use NULL va and the null_va trick didn't work either, so.. don't use va stuff at all..
This commit is contained in:
@@ -1479,6 +1479,16 @@ void do_unreal_log_raw(LogLevel loglevel, const char *subsystem, const char *eve
|
||||
unreal_log_recursion_trap = 0;
|
||||
}
|
||||
|
||||
void do_unreal_log_norecursioncheck(LogLevel loglevel, const char *subsystem, const char *event_id,
|
||||
Client *client, const char *msg, ...)
|
||||
{
|
||||
va_list vl;
|
||||
|
||||
va_start(vl, msg);
|
||||
do_unreal_log_internal(loglevel, subsystem, event_id, client, 1, msg, vl);
|
||||
va_end(vl);
|
||||
}
|
||||
|
||||
void do_unreal_log_internal(LogLevel loglevel, const char *subsystem, const char *event_id,
|
||||
Client *client, int expand_msg, const char *msg, va_list vl)
|
||||
{
|
||||
@@ -1491,37 +1501,36 @@ void do_unreal_log_internal(LogLevel loglevel, const char *subsystem, const char
|
||||
char msgbuf[1024];
|
||||
const char *loglevel_string = log_level_valtostring(loglevel);
|
||||
MultiLine *mmsg;
|
||||
static va_list null_va;
|
||||
Client *from_server = NULL;
|
||||
|
||||
if (loglevel_string == NULL)
|
||||
{
|
||||
do_unreal_log_internal(ULOG_ERROR, "log", "BUG_LOG_LOGLEVEL", NULL, 0,
|
||||
do_unreal_log_norecursioncheck(ULOG_ERROR, "log", "BUG_LOG_LOGLEVEL", NULL,
|
||||
"[BUG] Next log message had an invalid log level -- corrected to ULOG_ERROR",
|
||||
null_va);
|
||||
NULL);
|
||||
loglevel = ULOG_ERROR;
|
||||
loglevel_string = log_level_valtostring(loglevel);
|
||||
}
|
||||
if (!valid_subsystem(subsystem))
|
||||
{
|
||||
do_unreal_log_internal(ULOG_ERROR, "log", "BUG_LOG_SUBSYSTEM", NULL, 0,
|
||||
do_unreal_log_norecursioncheck(ULOG_ERROR, "log", "BUG_LOG_SUBSYSTEM", NULL,
|
||||
"[BUG] Next log message had an invalid subsystem -- changed to 'unknown'",
|
||||
null_va);
|
||||
NULL);
|
||||
subsystem = "unknown";
|
||||
}
|
||||
if (!valid_event_id(event_id))
|
||||
{
|
||||
do_unreal_log_internal(ULOG_ERROR, "log", "BUG_LOG_EVENT_ID", NULL, 0,
|
||||
do_unreal_log_norecursioncheck(ULOG_ERROR, "log", "BUG_LOG_EVENT_ID", NULL,
|
||||
"[BUG] Next log message had an invalid event id -- changed to 'unknown'",
|
||||
null_va);
|
||||
NULL);
|
||||
event_id = "unknown";
|
||||
}
|
||||
/* This one is probably temporary since it should not be a real error, actually (but often is) */
|
||||
if (expand_msg && strchr(msg, '%'))
|
||||
{
|
||||
do_unreal_log_internal(ULOG_ERROR, "log", "BUG_LOG_MESSAGE_PERCENT", NULL, 0,
|
||||
do_unreal_log_norecursioncheck(ULOG_ERROR, "log", "BUG_LOG_MESSAGE_PERCENT", NULL,
|
||||
"[BUG] Next log message contains a percent sign -- possibly accidental format string!",
|
||||
null_va);
|
||||
NULL);
|
||||
}
|
||||
|
||||
j = json_object();
|
||||
|
||||
Reference in New Issue
Block a user