diff options
author | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-07-03 11:44:35 +0000 |
---|---|---|
committer | w00t <w00t@e03df62e-2008-0410-955e-edbf42e46eb7> | 2007-07-03 11:44:35 +0000 |
commit | c8c3eaf9f77f7c5e65a1d5c9a0d6595cc812f7a1 (patch) | |
tree | cf6dfa09271e784b7cbf83a754daebbe96d9bcd6 /src | |
parent | 9ab3cd89031d8c2a45d0837a493d48c42d53d655 (diff) |
Fix off-by-one reported by Darom in bug #339
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@7421 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'src')
-rw-r--r-- | src/inspircd.cpp | 89 | ||||
-rw-r--r-- | src/modules/m_antibottler.cpp | 2 |
2 files changed, 90 insertions, 1 deletions
diff --git a/src/inspircd.cpp b/src/inspircd.cpp index 858862e9d..3ccdfca54 100644 --- a/src/inspircd.cpp +++ b/src/inspircd.cpp @@ -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; diff --git a/src/modules/m_antibottler.cpp b/src/modules/m_antibottler.cpp index 2c96495a4..e8dac81d0 100644 --- a/src/modules/m_antibottler.cpp +++ b/src/modules/m_antibottler.cpp @@ -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; |