diff options
author | Andrei Karas <akaras@inbox.ru> | 2015-06-21 03:30:29 +0300 |
---|---|---|
committer | Andrei Karas <akaras@inbox.ru> | 2015-06-21 14:46:55 +0300 |
commit | b2b26751445d89a4a1c26d4d77f140039deb27eb (patch) | |
tree | 0fbcf1d9c406f48d2da2bd41dc8a6e8ce66466ef | |
parent | 97f87df9fe13dcbbf89cd426c30a9aa1661f2e50 (diff) | |
download | paranucker-b2b26751445d89a4a1c26d4d77f140039deb27eb.tar.gz paranucker-b2b26751445d89a4a1c26d4d77f140039deb27eb.tar.bz2 paranucker-b2b26751445d89a4a1c26d4d77f140039deb27eb.tar.xz paranucker-b2b26751445d89a4a1c26d4d77f140039deb27eb.zip |
Add protection against infinite loop.
-rw-r--r-- | src/parsers/generic.cpp | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/parsers/generic.cpp b/src/parsers/generic.cpp index b2743a4..a6308b3 100644 --- a/src/parsers/generic.cpp +++ b/src/parsers/generic.cpp @@ -56,6 +56,18 @@ Node *createParseNode(Node *parent, return nullptr; } + if (allocations > 1000000) + { + fatal_error(0, "Plugin error. Infinite loop detected 1"); + return nullptr; + } + + if (parent && parent->indent > 30000) + { + fatal_error(0, "Plugin error. Infinite loop detected 2"); + return nullptr; + } + Node *node = nullptr; switch (TREE_CODE(gccNode)) { |