From 2f2f789f489b850bab1f4f18556e1f20f6695caa Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Sat, 26 Mar 2016 17:34:36 -0600 Subject: [PATCH] Fix parsing of '' strings. found by AFL --- include/chaiscript/language/chaiscript_parser.hpp | 6 +++++- src/main.cpp | 3 +++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/include/chaiscript/language/chaiscript_parser.hpp b/include/chaiscript/language/chaiscript_parser.hpp index c1da4272..5f4e5e49 100644 --- a/include/chaiscript/language/chaiscript_parser.hpp +++ b/include/chaiscript/language/chaiscript_parser.hpp @@ -1196,7 +1196,7 @@ namespace chaiscript std::string match; { - // scope for cparser destrutor + // scope for cparser destructor Char_Parser cparser(match, false); for (auto s = start + 1, end = m_position - 1; s != end; ++s) { @@ -1204,6 +1204,10 @@ namespace chaiscript } } + if (match.size() != 1) { + throw exception::eval_error("Single-quoted strings must be 1 character long", File_Position(m_position.line, m_position.col), *m_filename); + } + m_match_stack.push_back(make_node(match, start.line, start.col)); return true; } diff --git a/src/main.cpp b/src/main.cpp index b4d5fa80..7ac9b2b6 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -371,6 +371,9 @@ int main(int argc, char *argv[]) return EXIT_FAILURE; } } + catch (const chaiscript::exception::load_module_error &e) { + std::cout << "Unhandled module load error\n" << e.what() << '\n'; + } // catch (std::exception &e) { // std::cout << e.what() << '\n';