From 8888d8ef07529fcff1913a89be7dea72d731530b Mon Sep 17 00:00:00 2001 From: brain Date: Fri, 9 May 2008 18:39:37 +0000 Subject: Add test suites for edge cases and in the process, spot a crash in the new code and fix it (empty mask in the match() functions makes it bomb) git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@9682 e03df62e-2008-0410-955e-edbf42e46eb7 --- src/wildcard.cpp | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/wildcard.cpp') diff --git a/src/wildcard.cpp b/src/wildcard.cpp index 9846b7d4f..3a91e8350 100644 --- a/src/wildcard.cpp +++ b/src/wildcard.cpp @@ -35,6 +35,9 @@ CoreExport bool csmatch(const std::string &str, const std::string &mask) std::string::const_iterator wild = mask.begin(); std::string::const_iterator string = str.begin(); + if (mask.empty()) + return false; + while ((string != str.end()) && (wild != mask.end()) && (*wild != '*')) { if ((*wild != *string) && (*wild != '?')) @@ -81,6 +84,9 @@ CoreExport bool match(const std::string &str, const std::string &mask) std::string::const_iterator wild = mask.begin(); std::string::const_iterator string = str.begin(); + if (mask.empty()) + return false; + while ((string != str.end()) && (wild != mask.end()) && (*wild != '*')) { if ((lowermap[(unsigned char)*wild] != lowermap[(unsigned char)*string]) && (*wild != '?')) -- cgit v1.2.3