From c1799538e9bba02ac188c262f051e9bae6e612f8 Mon Sep 17 00:00:00 2001 From: Luke Bratch Date: Mon, 3 Jan 2022 17:29:58 +0000 Subject: Increase maximum auto join channels from 10 to 40, correctly check for maximum configuration array length, correct configuration array debug output text. --- TODO | 10 +++++++++- config.c | 4 ++-- structures.h | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/TODO b/TODO index cc6f351..4240d87 100644 --- a/TODO +++ b/TODO @@ -14,6 +14,14 @@ Can memory usage be reduced further? (e.g. better channel struct management) Ability to load new certificate whilst running. -Are any other strncmps incorrect (i.e. just checking a substring)? +Remaining strncmps are safe but could do with length comparisons too. "Our initial MODE" comparison may need to be more complex. + +"/topic" response goes to all clients. + +Connection/login logging - is debug.log sufficient? + +Do connectcommands happen on reconnect? + +Are "no such nick/channel" messages as shown in clients correct compared to non-(bla)bouncer clients? Crash when requesting 30 hour replay. diff --git a/config.c b/config.c index 3fa28a7..483f88e 100644 --- a/config.c +++ b/config.c @@ -198,7 +198,7 @@ int getconfarr(char *confname, char *filename, char dest[MAXCONFARR][MAXDATASIZE // If we've on the closing brace line, then we're done if (line[i] == '}') { for (int i = 0; i < valuecount; i++) { - debugprint(DEBUG_FULL, "getconfstr(): returning '%s'.\n", dest[i]); + debugprint(DEBUG_FULL, "getconfarr(): returning '%s'.\n", dest[i]); } // Close fine and return success (or 0 if no values found in an otherwise valid array) @@ -235,7 +235,7 @@ int getconfarr(char *confname, char *filename, char dest[MAXCONFARR][MAXDATASIZE } // If we've found too many values, return an error - if (valuecount > MAXCONFARR) { + if (valuecount > MAXCONFARR - 1) { snprintf(dest[0], MAXDATASIZE, "Too many elements defined for configuration array '%s', maximum number is '%d'.\n", confname, MAXCONFARR); fclose(fp); return -1; diff --git a/structures.h b/structures.h index 9e5f575..d070638 100644 --- a/structures.h +++ b/structures.h @@ -29,7 +29,7 @@ #define MAXPORTLEN 6 // Up to 65535, so 5 characters + 1 for null #define CLIENTCODELEN 17 // Max length of a client code + 1 for null #define MAXCLIENTCODES 64 // Max number of client codes to track -#define MAXCONFARR 10 // Max number of entries that a configuration array can have +#define MAXCONFARR 40 // Max number of entries that a configuration array can have #define MAXCHANNICKS 8192 // Maximum number of nicks to track per channel struct ircdstate { -- cgit v1.2.3