]> git.netwichtig.de Git - user/henk/code/inspircd.git/commitdiff
Fix off-by-one reported by Darom in bug #339
authorw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 3 Jul 2007 11:44:35 +0000 (11:44 +0000)
committerw00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7>
Tue, 3 Jul 2007 11:44:35 +0000 (11:44 +0000)
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7421 e03df62e-2008-0410-955e-edbf42e46eb7

src/inspircd.cpp
src/modules/m_antibottler.cpp

index 858862e9dfa79c0ce06d05fbe9d3ddf1096fef84..3ccdfca549c4fef5db8ed68293deaf486b88c3ca 100644 (file)
@@ -40,6 +40,8 @@
 #include "typedefs.h"
 #include "command_parse.h"
 #include "exitcodes.h"
+#include "wildcard.h"
+
 
 #ifdef WIN32
 
@@ -1150,6 +1152,93 @@ int InspIRCd::Run()
 
 int main(int argc, char** argv)
 {
+       struct timeval start, stop;
+       std::string str;
+       std::string pattern;
+       char *strp, *patternp;
+
+       if (argc < 3)
+       {
+               printf("not enough args: pattern string\n");
+               exit(0);
+       }
+
+       pattern = argv[1];
+       str = argv[2];
+
+       patternp = argv[1];
+       strp = argv[2];
+
+       printf("result of std::string.find: ");
+
+       if (str.find(pattern) != string::npos)
+       {
+               printf("true\n");
+       }
+       else
+       {
+               printf("false\n");
+       }
+
+       printf("result of match(): ");
+
+       if (match(strp, patternp))
+       {
+               printf("true\n");
+       }
+       else
+       {
+               printf("false\n");
+       }
+
+
+       printf("result of strstr(): ");
+
+       if (strstr(strp, patternp))
+       {
+               printf("true\n");
+       }
+       else
+       {
+               printf("false\n");
+       }
+
+       gettimeofday(&start, NULL);
+       for (int i = 0; i < 30000; i++)
+       {
+               str.find(pattern);      
+       }
+       gettimeofday(&stop, NULL);
+
+       printf("std::string.find: %lds and %ldus\n", stop.tv_sec - start.tv_sec, stop.tv_usec - start.tv_usec);
+
+
+       gettimeofday(&start, NULL);
+       for (int i = 0; i < 30000; i++)
+       {
+               match(strp, patternp);
+       }
+       gettimeofday(&stop, NULL);
+
+       printf("match(): %lds and %ldus\n", stop.tv_sec - start.tv_sec, stop.tv_usec - start.tv_usec);
+
+
+
+       gettimeofday(&start, NULL);
+       for (int i = 0; i < 30000; i++)
+       {
+               strstr(strp, patternp);
+       }
+       gettimeofday(&stop, NULL);
+
+       printf("strstr(): %lds and %ldus\n", stop.tv_sec - start.tv_sec, stop.tv_usec - start.tv_usec);
+
+       exit(0);
+
+
+
+
+
        SI = new InspIRCd(argc, argv);
        SI->Run();
        delete SI;
index 2c96495a4341c53e1ec7929798feafa79dfe6beb..e8dac81d04ae5d7d295d4323bf96bedee71fd61a 100644 (file)
@@ -83,7 +83,7 @@ class ModuleAntiBottler : public Module
                        if (!not_bottler)
                        {
                                std::string strgecos = std::string(gecos) + "[Possible bottler, ident: " + std::string(ident) + "]";
-                               const char* modified[3];
+                               const char* modified[4];
                                modified[0] = "bottler";
                                modified[1] = local;
                                modified[2] = remote;