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>
This commit is contained in:
parent
fce8d9fd55
commit
f397a3ec31
|
@ -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);
|
||||
|
||||
|
|
|
@ -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")
|
||||
|
|
Loading…
Reference in New Issue