From 3d34896beb1d6b32ae677f1790f144a9c21c124c Mon Sep 17 00:00:00 2001 From: jesopo Date: Wed, 17 Oct 2018 15:02:04 +0100 Subject: Better handling of eval errors in modules/eval_python.py --- modules/eval_python.py | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) (limited to 'modules') diff --git a/modules/eval_python.py b/modules/eval_python.py index 86fe3db3..5fcdec4b 100644 --- a/modules/eval_python.py +++ b/modules/eval_python.py @@ -2,12 +2,24 @@ import html, socket from src import ModuleManager, utils EVAL_TEMPLATE = """ -import sys +import StringIO, sys + compiled = compile(sys.stdin.read(), "code", "single") -result = eval(compiled) -print("") + +old_stdout = sys.stdout +stdout = StringIO.StringIO() +sys.stdout = stdout + +try: + result = eval(compiled) +except Exception as e: + old_stdout.write(json.dumps({"success" False, "out": str(e)})) + sys.exit() + +stdout.write("\n") if not result == None: - sys.stdout.write(str(result)) + stdout.write(str(result)+"\n") +old_stdout.write(json.dumps({"success" True, "out": stdout.getvalue()})) """ EVAL_URL = "https://tpcg.tutorialspoint.com/tpcg.php" -- cgit v1.3.1-10-gc9f91