From 8d2f20ef411bd21eaf57052ab0a5b4fbb6eb9520 Mon Sep 17 00:00:00 2001 From: Bram Matthys Date: Wed, 11 Aug 2021 17:45:01 +0200 Subject: [PATCH] Newlog: debug.c, match.c, module.c, random.c and then for api-*.c log out of space in all circumstances. --- src/api-channelmode.c | 4 ++++ src/api-clicap.c | 17 +++++++++++------ src/api-extban.c | 2 ++ src/api-moddata.c | 2 ++ src/api-usermode.c | 2 ++ src/debug.c | 9 +++++++-- src/match.c | 9 ++++++--- src/modules.c | 8 ++++++-- src/random.c | 5 +++-- 9 files changed, 43 insertions(+), 15 deletions(-) diff --git a/src/api-channelmode.c b/src/api-channelmode.c index 6f73ff8bb..234ede244 100644 --- a/src/api-channelmode.c +++ b/src/api-channelmode.c @@ -223,6 +223,8 @@ Cmode *CmodeAdd(Module *module, CmodeInfo req, Cmode_t *mode) } if (i == EXTCMODETABLESZ) { + unreal_log(ULOG_ERROR, "module", "CHANNEL_MODE_OUT_OF_SPACE", NULL, + "CmodeAdd: out of space!!!"); if (module) module->errorcode = MODERR_NOSPACE; return NULL; @@ -242,6 +244,8 @@ Cmode *CmodeAdd(Module *module, CmodeInfo req, Cmode_t *mode) { if (paraslot == MAXPARAMMODES - 1) { + unreal_log(ULOG_ERROR, "module", "CHANNEL_MODE_OUT_OF_SPACE", NULL, + "CmodeAdd: out of space!!! Place 2."); if (module) module->errorcode = MODERR_NOSPACE; return NULL; diff --git a/src/api-clicap.c b/src/api-clicap.c index 69fff7437..978426253 100644 --- a/src/api-clicap.c +++ b/src/api-clicap.c @@ -79,7 +79,9 @@ long ClientCapabilityBit(const char *token) #ifdef DEBUGMODE if (!clicap) { - ircd_log(LOG_ERROR, "WARNING: ClientCapabilityBit(): unknown token '%s'", token); + unreal_log(ULOG_WARNING, "main", "BUG_CLIENTCAPABILITYBIT_UNKNOWN_TOKEN", NULL, + "[BUG] ClientCapabilityBit() check for unknown token: $token", + log_data_string("token", token)); } #endif @@ -162,8 +164,8 @@ ClientCapability *ClientCapabilityAdd(Module *module, ClientCapabilityInfo *clic v = clicap_allocate_cap(); if (v == 0) { - sendto_realops("ClientCapabilityAdd: out of space!!!"); - ircd_log(LOG_ERROR, "ClientCapabilityAdd: out of space!!!"); + unreal_log(ULOG_ERROR, "module", "CLIENTCAPABILITY_OUT_OF_SPACE", NULL, + "ClientCapabilityAdd: out of space!!!"); if (module) module->errorcode = MODERR_NOSPACE; return NULL; @@ -204,8 +206,9 @@ ClientCapability *ClientCapabilityAdd(Module *module, ClientCapabilityInfo *clic void unload_clicap_commit(ClientCapability *clicap) { /* This is an unusual operation, I think we should log it. */ - ircd_log(LOG_ERROR, "Unloading client capability '%s'", clicap->name); - sendto_realops("Unloading client capability '%s'", clicap->name); + unreal_log(ULOG_INFO, "module", "UNLOAD_CLICAP", NULL, + "Unloading client capability '$token'", + log_data_string("token", clicap->name)); /* NOTE: Stripping the CAP from local clients is done * in clicap_post_rehash(), so not here. @@ -284,7 +287,9 @@ void clicap_pre_rehash(void) { if (i == MAXCLICAPS) { - ircd_log(LOG_ERROR, "More than %d caps loaded - what???", MAXCLICAPS); + unreal_log(ULOG_ERROR, "module", "BUG_TOO_MANY_CLIENTCAPABILITIES", NULL, + "[BUG] clicap_pre_rehash: More than $count caps loaded - this should never happen", + log_data_integer("count", MAXCLICAPS)); break; } safe_strdup(old_caps[i], clicap->name); diff --git a/src/api-extban.c b/src/api-extban.c index 2a9508d93..6582bb37a 100644 --- a/src/api-extban.c +++ b/src/api-extban.c @@ -68,6 +68,8 @@ Extban *ExtbanAdd(Module *module, ExtbanInfo req) break; if (slot >= EXTBANTABLESZ - 1) { + unreal_log(ULOG_ERROR, "module", "EXTBAN_OUT_OF_SPACE", NULL, + "ExtbanAdd: out of space!!!"); if (module) module->errorcode = MODERR_NOSPACE; return NULL; diff --git a/src/api-moddata.c b/src/api-moddata.c index d29225a65..ba8a8ae84 100644 --- a/src/api-moddata.c +++ b/src/api-moddata.c @@ -65,6 +65,8 @@ ModDataInfo *ModDataAdd(Module *module, ModDataInfo req) ((req.type == MODDATATYPE_MEMBER) && (slotav >= MODDATA_MAX_MEMBER)) || ((req.type == MODDATATYPE_MEMBERSHIP) && (slotav >= MODDATA_MAX_MEMBERSHIP))) { + unreal_log(ULOG_ERROR, "module", "MOD_DATA_OUT_OF_SPACE", NULL, + "ModDataAdd: out of space!!!"); if (module) module->errorcode = MODERR_NOSPACE; return NULL; diff --git a/src/api-usermode.c b/src/api-usermode.c index 94498e0a9..05ee614ba 100644 --- a/src/api-usermode.c +++ b/src/api-usermode.c @@ -212,6 +212,8 @@ Umode *UmodeAdd(Module *module, char ch, int global, int unset_on_deoper, int (* } else { + unreal_log(ULOG_ERROR, "module", "USER_MODE_OUT_OF_SPACE", NULL, + "UmodeAdd: out of space!!!"); if (module) module->errorcode = MODERR_NOSPACE; return NULL; diff --git a/src/debug.c b/src/debug.c index ea05a2486..2cbc13bf0 100644 --- a/src/debug.c +++ b/src/debug.c @@ -150,8 +150,13 @@ void debug(int level, FORMAT_STRING(const char *form), ...) int checkprotoflags(Client *client, int flags, char *file, int line) { if (!MyConnect(client)) - ircd_log(LOG_ERROR, "[Debug] [BUG] ERROR: %s:%d: IsToken(<%s>,%d) on remote client", - file, line, client->name, flags); + { + unreal_log(ULOG_ERROR, "main", "BUG_ISTOKEN_REMOTE_CLIENT", client, + "IsToken($token_value) used on remote client in $file:$line", + log_data_integer("token_value", flags), + log_data_string("file", file), + log_data_integer("line", line)); + } return ((client->local->proto & flags) == flags) ? 1 : 0; } #endif diff --git a/src/match.c b/src/match.c index 157d87906..02306303c 100644 --- a/src/match.c +++ b/src/match.c @@ -690,14 +690,17 @@ char *stripbadwords(char *str, ConfigItem_badword *start_bw, int *blocked) ret = pcre2_match(this_word->pcre2_expr, ptr, PCRE2_ZERO_TERMINATED, 0, 0, md, NULL); /* run the regex */ if (ret > 0) { - ircd_log(LOG_ERROR, "pcre2_get_ovector_count: %d", pcre2_get_ovector_count(md)); dd = pcre2_get_ovector_pointer(md); start = (int)dd[0]; end = (int)dd[1]; if ((start < 0) || (end < 0) || (start > strlen(ptr)) || (end > strlen(ptr)+1)) { - ircd_log(LOG_ERROR, "pcre2_match() returned an ovector with OOB start/end: %d/%d, str (%d): '%s'", - (int)start, (int)end, (int)strlen(ptr), ptr); + unreal_log(ULOG_FATAL, "main", "BUG_STRIPBADWORDS_PCRE2_MATCH_OOB", NULL, + "[BUG] pcre2_match() returned an ovector with OOB start/end: $start/$end, len $length: '$buf'", + log_data_integer("start", start), + log_data_integer("end", end), + log_data_integer("length", strlen(ptr)), + log_data_string("buf", ptr)); abort(); } m = end - start; diff --git a/src/modules.c b/src/modules.c index a75ddff4c..7674e5526 100644 --- a/src/modules.c +++ b/src/modules.c @@ -564,7 +564,9 @@ void FreeModObj(ModuleObject *obj, Module *m) } else { - ircd_log(LOG_ERROR, "FreeModObj() called for unknown object"); + unreal_log(ULOG_FATAL, "module", "FREEMODOBJ_UNKNOWN_TYPE", NULL, + "[BUG] FreeModObj() called for unknown object (type $type)", + log_data_integer("type", obj->type)); abort(); } } @@ -1184,7 +1186,9 @@ void unload_all_modules(void) for (m = Modules; m; m = m->next) { #ifdef DEBUGMODE - ircd_log(LOG_ERROR, "Unloading %s...", m->header->name); + unreal_log(ULOG_DEBUG, "module", "MODULE_UNLOADING", NULL, + "Unloading module $module_name", + log_data_string("module_name", m->header->name)); #endif irc_dlsym(m->dll, "Mod_Unload", Mod_Unload); if (Mod_Unload) diff --git a/src/random.c b/src/random.c index d49c85cc4..670915092 100644 --- a/src/random.c +++ b/src/random.c @@ -308,8 +308,9 @@ static void _rs_stir(void) if (RAND_bytes(rnd, sizeof(rnd)) <= 0) { - ircd_log(LOG_ERROR, "Couldn't obtain random bytes (error 0x%lx)", - (unsigned long)ERR_get_error()); + unreal_log(ULOG_FATAL, "random", "RANDOM_OUT_OF_BYTES", NULL, + "Could not obtain random bytes, error $tls_error_code", + log_data_integer("tls_error_code", ERR_get_error())); abort(); }