diff options
-rw-r--r-- | Changes | 1 | ||||
-rw-r--r-- | src/core/os_ignore.c | 3 | ||||
-rw-r--r-- | src/process.c | 43 | ||||
-rw-r--r-- | version.log | 6 |
4 files changed, 32 insertions, 21 deletions
@@ -1,6 +1,7 @@ Anope Version S V N -------------------- Provided by Anope Dev. <dev@anope.org> - 2005 +05/25 F Segfault when clearing non-existing nick '0' from ignore list. [#383] 05/25 F Removed a double extern definition of rdb_tag_table. [#381] 05/25 F Fixed mydbgen so it sends the pass and installs in the data dir. [ #00] 05/25 F Not all nick options were displayed in listnicks. [#380] diff --git a/src/core/os_ignore.c b/src/core/os_ignore.c index a4d73d649..7b1ee8ff5 100644 --- a/src/core/os_ignore.c +++ b/src/core/os_ignore.c @@ -171,6 +171,9 @@ void delete_ignore(const char *nick) if (stricmp(ign->who, nick) == 0) break; } + /* If the ignore was not found, bail out -GD */ + if (!ign) + return; if (prev) prev->next = ign->next; else diff --git a/src/process.c b/src/process.c index 95307c1ed..1fa7354b2 100644 --- a/src/process.c +++ b/src/process.c @@ -99,30 +99,33 @@ IgnoreData *get_ignore(const char *nick) break; } } - if (!finished && whichlist2) { - for (ign = *whichlist2, prev = NULL; ign; - prev = ign, ign = ign->next) { - if (match_usermask(ign->who, u)) { - finished = 1; - break; + /* We can only do the next checks if we have an actual user -GD */ + if (u) { + if (!finished && whichlist2) { + for (ign = *whichlist2, prev = NULL; ign; + prev = ign, ign = ign->next) { + if (match_usermask(ign->who, u)) { + finished = 1; + break; + } } } - } - if (!finished) { - for (ign = *whichlistast, prev = NULL; ign; - prev = ign, ign = ign->next) { - if (match_usermask(ign->who, u)) { - finished = 1; - break; + if (!finished) { + for (ign = *whichlistast, prev = NULL; ign; + prev = ign, ign = ign->next) { + if (match_usermask(ign->who, u)) { + finished = 1; + break; + } } } - } - if (!finished) { - for (ign = *whichlistqst, prev = NULL; ign; - prev = ign, ign = ign->next) { - if (match_usermask(ign->who, u)) { - finished = 1; - break; + if (!finished) { + for (ign = *whichlistqst, prev = NULL; ign; + prev = ign, ign = ign->next) { + if (match_usermask(ign->who, u)) { + finished = 1; + break; + } } } } diff --git a/version.log b/version.log index 1b90e830c..5a2931814 100644 --- a/version.log +++ b/version.log @@ -8,10 +8,14 @@ VERSION_MAJOR="1" VERSION_MINOR="7" VERSION_PATCH="10" -VERSION_BUILD="814" +VERSION_BUILD="815" # $Log$ # +# BUILD : 1.7.10 (815) +# BUGS : 383 +# NOTES : Added value checking for deleting ignores, which fixes a (very rare) segfault +# # BUILD : 1.7.10 (814) # BUGS : 381 # NOTES : Removed a double extern definition of rdb_tag_table; Fixed mydbgen so it sends the pass and installs in the data dir |