summaryrefslogtreecommitdiff
path: root/tools/pyboard.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/pyboard.py')
-rwxr-xr-xtools/pyboard.py8
1 files changed, 7 insertions, 1 deletions
diff --git a/tools/pyboard.py b/tools/pyboard.py
index 6376b13c7..c97ddbe48 100755
--- a/tools/pyboard.py
+++ b/tools/pyboard.py
@@ -70,6 +70,7 @@ Or:
import sys
import time
import os
+import ast
try:
stdout = sys.stdout.buffer
@@ -426,7 +427,12 @@ class Pyboard:
data = bytearray()
self.exec_("print(r(%u))" % chunk_size, data_consumer=lambda d: data.extend(d))
assert data.endswith(b"\r\n\x04")
- data = eval(str(data[:-3], "ascii"))
+ try:
+ data = ast.literal_eval(str(data[:-3], "ascii"))
+ if not isinstance(data, bytes):
+ raise ValueError("Not bytes")
+ except (UnicodeError, ValueError) as e:
+ raise PyboardError("fs_get: Could not interpret received data: %s" % str(e))
if not data:
break
f.write(data)