summaryrefslogtreecommitdiffstatshomepage
path: root/py
diff options
context:
space:
mode:
authorPaul Sokolovsky <pfalcon@users.sourceforge.net>2017-04-02 21:20:07 +0300
committerPaul Sokolovsky <pfalcon@users.sourceforge.net>2017-04-02 21:20:07 +0300
commit9a973977bbba8fda284bbc6eca4991fe0fd1d5ac (patch)
tree94c852c2b4d18f39d9ebcb8666a551152647b320 /py
parent5b2db4bb51548ce5f20b5f3fa5890c50514ec884 (diff)
downloadmicropython-9a973977bbba8fda284bbc6eca4991fe0fd1d5ac.tar.gz
micropython-9a973977bbba8fda284bbc6eca4991fe0fd1d5ac.zip
py/objstr: Use MICROPY_FULL_CHECKS for range checking when constructing bytes.
Split this setting from MICROPY_CPYTHON_COMPAT. The idea is to be able to keep MICROPY_CPYTHON_COMPAT disabled, but still pass more of regression testsuite. In particular, this fixes last failing test in basics/ for Zephyr port.
Diffstat (limited to 'py')
-rw-r--r--py/mpconfig.h9
-rw-r--r--py/objstr.c2
2 files changed, 10 insertions, 1 deletions
diff --git a/py/mpconfig.h b/py/mpconfig.h
index 9c89fc18aa..06c19f72b1 100644
--- a/py/mpconfig.h
+++ b/py/mpconfig.h
@@ -556,6 +556,15 @@ typedef double mp_float_t;
#define MICROPY_CPYTHON_COMPAT (1)
#endif
+// Perform full checks as done by CPython. Disabling this
+// may produce incorrect results, if incorrect data is fed,
+// but should not lead to MicroPython crashes or similar
+// grave issues (in other words, only user app should be,
+// affected, not system).
+#ifndef MICROPY_FULL_CHECKS
+#define MICROPY_FULL_CHECKS (1)
+#endif
+
// Whether POSIX-semantics non-blocking streams are supported
#ifndef MICROPY_STREAMS_NON_BLOCK
#define MICROPY_STREAMS_NON_BLOCK (0)
diff --git a/py/objstr.c b/py/objstr.c
index 60a26d45b1..70de0a693a 100644
--- a/py/objstr.c
+++ b/py/objstr.c
@@ -236,7 +236,7 @@ STATIC mp_obj_t bytes_make_new(const mp_obj_type_t *type_in, size_t n_args, size
mp_obj_t item;
while ((item = mp_iternext(iterable)) != MP_OBJ_STOP_ITERATION) {
mp_int_t val = mp_obj_get_int(item);
- #if MICROPY_CPYTHON_COMPAT
+ #if MICROPY_FULL_CHECKS
if (val < 0 || val > 255) {
mp_raise_ValueError("bytes value out of range");
}