diff options
author | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2017-04-02 21:20:07 +0300 |
---|---|---|
committer | Paul Sokolovsky <pfalcon@users.sourceforge.net> | 2017-04-02 21:20:07 +0300 |
commit | 9a973977bbba8fda284bbc6eca4991fe0fd1d5ac (patch) | |
tree | 94c852c2b4d18f39d9ebcb8666a551152647b320 /py | |
parent | 5b2db4bb51548ce5f20b5f3fa5890c50514ec884 (diff) | |
download | micropython-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.h | 9 | ||||
-rw-r--r-- | py/objstr.c | 2 |
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"); } |