# HG changeset patch # User Santeri Piippo # Date 1517403019 -7200 # Node ID 4d87bc1263686f61bce8c7b808fabd3038168476 # Parent 9200664daf872b3c7c57b39b2b35b1185817a803 don't crash and burn if someone sends something that's not LDraw diff -r 9200664daf87 -r 4d87bc126368 parse.py --- a/parse.py Wed Jan 31 14:45:31 2018 +0200 +++ b/parse.py Wed Jan 31 14:50:19 2018 +0200 @@ -8,7 +8,10 @@ def parse_ldraw_code(line): if isinstance(line, bytes): - line = line.decode() + try: + line = line.decode() + except UnicodeDecodeError: + raise BadLdrawLine("bad unicode") line = line.strip() if not line: return linetypes.EmptyLine() diff -r 9200664daf87 -r 4d87bc126368 webfront.py --- a/webfront.py Wed Jan 31 14:45:31 2018 +0200 +++ b/webfront.py Wed Jan 31 14:50:19 2018 +0200 @@ -1,5 +1,5 @@ #!/usr/bin/env python3 -from flask import Flask, render_template, redirect, request +from flask import Flask, render_template, redirect, request, abort from ldcheck import load_config, load_colours, find_ldconfig_ldr_paths from ldcheck import read_ldraw from testsuite import load_tests, check_model, problem_text @@ -17,11 +17,14 @@ for ldconfig_ldr_path in find_ldconfig_ldr_paths(config): with ldconfig_ldr_path.open() as ldconfig_ldr: load_colours(ldconfig_ldr) - model = read_ldraw( - file.stream, - name = file.filename, - config = config, - ) + try: + model = read_ldraw( + file.stream, + name = file.filename, + config = config, + ) + except: + abort(400) test_suite = load_tests() report = check_model(model, test_suite)