From b69b841fa3d3f6f029f2d6f8b8736fb58319466c Mon Sep 17 00:00:00 2001 From: Martchus Date: Fri, 11 May 2018 16:15:16 +0200 Subject: [PATCH] Prevent huge memory allocation for Damerau-Levenshtein algo --- application/argumentparser.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/application/argumentparser.cpp b/application/argumentparser.cpp index 6415aaa..7f3e351 100644 --- a/application/argumentparser.cpp +++ b/application/argumentparser.cpp @@ -1209,6 +1209,10 @@ string ArgumentParser::findSuggestions(int argc, const char *const *argv, unsign // determine the unknown/misspelled argument const auto *unknownArg(*reader.argv); auto unknownArgSize(strlen(unknownArg)); + // -> refuse suggestions for long args to prevent huge memory allocation for Damerau-Levenshtein algo + if (unknownArgSize > 16) { + return string(); + } // -> remove dashes since argument names internally don't have them if (unknownArgSize >= 2 && unknownArg[0] == '-' && unknownArg[1] == '-') { unknownArg += 2;