summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDamien George <damien@micropython.org>2023-11-21 22:28:57 +1100
committerDamien George <damien@micropython.org>2023-11-21 22:28:57 +1100
commitf397a3ec318f3ad05aa287764ae7cef32202380f (patch)
tree97fad3f7e5d4d9e5b746f790fc5a42a9eafc9df8
parentfce8d9fd55409ab1027beee5671bc653fb5beb97 (diff)
py/objslice: Validate that the argument to indices() is an integer.
Otherwise passing in a non-integer can lead to an invalid memory access. Thanks to Junwha Hong and Wonil Jang @S2Lab, UNIST for finding the issue. Fixes issue #13007. Signed-off-by: Damien George <damien@micropython.org>
-rw-r--r--py/objslice.c2
-rw-r--r--tests/basics/slice_indices.py5
2 files changed, 6 insertions, 1 deletions
diff --git a/py/objslice.c b/py/objslice.c
index 75fa3bc3f..dcd6af8b2 100644
--- a/py/objslice.c
+++ b/py/objslice.c
@@ -54,7 +54,7 @@ STATIC mp_obj_t slice_unary_op(mp_unary_op_t op, mp_obj_t o_in) {
#if MICROPY_PY_BUILTINS_SLICE_INDICES
STATIC mp_obj_t slice_indices(mp_obj_t self_in, mp_obj_t length_obj) {
- mp_int_t length = mp_obj_int_get_checked(length_obj);
+ mp_int_t length = mp_obj_get_int(length_obj);
mp_bound_slice_t bound_indices;
mp_obj_slice_indices(self_in, length, &bound_indices);
diff --git a/tests/basics/slice_indices.py b/tests/basics/slice_indices.py
index b7f439ccc..ccd7667e9 100644
--- a/tests/basics/slice_indices.py
+++ b/tests/basics/slice_indices.py
@@ -25,3 +25,8 @@ print(A()[2:7:2].indices(5))
print(A()[2:7:-2].indices(5))
print(A()[7:2:2].indices(5))
print(A()[7:2:-2].indices(5))
+
+try:
+ print(A()[::].indices(None))
+except TypeError:
+ print("TypeError")