From 23a948e36f72f5a71b4e99c5fe4c7eb0252de079 Mon Sep 17 00:00:00 2001 From: Ryan Hancock <krhancoc@uwaterloo.ca> Date: Wed, 30 Nov 2022 14:34:57 -0700 Subject: [PATCH] Decoding check --- os161-container/evaluate.py | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/os161-container/evaluate.py b/os161-container/evaluate.py index 93247a9..512626e 100755 --- a/os161-container/evaluate.py +++ b/os161-container/evaluate.py @@ -69,9 +69,15 @@ class Namespace: def main(args): tests = [] - with open(args.log, "r") as f: + encoding_error = False + with open(args.log, "rb") as f: log = f.read() - log.strip() + try: + log.decode(encoding='utf-8', errors='strict') + except: + encoding_error = True + log = log.decode(encoding='utf-8', errors='ignore') + log = "\n".join([ l.strip() for l in log.split("\n") ]) # Remove one cause topline is a split so would get empty line before tmp = log.split(">SPLIT<")[1:] for t in tmp: @@ -90,6 +96,8 @@ def main(args): report = Report() for eval_func, out_of in verify.RUBRIC.items(): name, mark, comments = eval_func(tests, helpers) + if encoding_error: + comments = "We could not decode your log into ASCII, this could lead to undefined behaviour everywhere, you have a memory corruption most likely in your code" report.add(name, mark, out_of, comments) print(str(report)) report.to_csv("/logs/report.csv") -- GitLab