From 73324216571a2d62ae3210fa99ac5d15271d83ea Mon Sep 17 00:00:00 2001 From: brain Date: Fri, 6 Jun 2008 16:12:38 +0000 Subject: If we have > 10 matches to a command, abort and dont try and show the list. This stops "/." listing a massive amount of commands too long to show, and keeps things within common sense. :P git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9848 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/modules/m_abbreviation.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/modules') diff --git a/src/modules/m_abbreviation.cpp b/src/modules/m_abbreviation.cpp index dbda047b5..c80df1858 100644 --- a/src/modules/m_abbreviation.cpp +++ b/src/modules/m_abbreviation.cpp @@ -45,6 +45,7 @@ class ModuleAbbreviation : public Module /* Look for any command that starts with the same characters, if it does, replace the command string with it */ size_t clen = command.length(); std::string foundcommand, matchlist; + size_t matches = 0; bool foundmatch = false; for (Commandtable::iterator n = ServerInstance->Parser->cmdlist.begin(); n != ServerInstance->Parser->cmdlist.end(); ++n) { @@ -53,6 +54,12 @@ class ModuleAbbreviation : public Module if (command == n->first.substr(0, clen)) { + if (++matches > 10) + { + user->WriteNumeric(420, "%s :Ambiguous abbreviation and too many possible matches.", user->nick.c_str()); + return false; + } + if (!foundmatch) { /* Found the command */ -- cgit v1.2.3