From 484bf7243ef0098cb9d1fa367ea66876eab0e9c6 Mon Sep 17 00:00:00 2001 From: brain Date: Mon, 5 May 2008 10:10:34 +0000 Subject: Add sanity checks to LoopCall to prevent miscalls like this by broken 3rd party modules git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9643 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/command_parse.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/command_parse.cpp') diff --git a/src/command_parse.cpp b/src/command_parse.cpp index d6e5f3c56..4c9701645 100644 --- a/src/command_parse.cpp +++ b/src/command_parse.cpp @@ -50,6 +50,9 @@ int InspIRCd::PassCompare(Extensible* ex, const char* data,const char* input, co */ int CommandParser::LoopCall(User* user, Command* CommandObj, const std::vector& parameters, unsigned int splithere, unsigned int extra) { + if (splithere >= parameters.size()) + return 0; + /* First check if we have more than one item in the list, if we don't we return zero here and the handler * which called us just carries on as it was. */ @@ -99,6 +102,9 @@ int CommandParser::LoopCall(User* user, Command* CommandObj, const std::vector& parameters, unsigned int splithere) { + if (splithere >= parameters.size()) + return 0; + /* First check if we have more than one item in the list, if we don't we return zero here and the handler * which called us just carries on as it was. */ -- cgit v1.2.3