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