diff options
| author | Damien George <damien@micropython.org> | 2024-02-16 11:41:28 +1100 |
|---|---|---|
| committer | Damien George <damien@micropython.org> | 2024-02-19 23:40:54 +1100 |
| commit | 24234937747e6d7fd920d21358fb26b826398e1a (patch) | |
| tree | 7f6662dc0889b5a1c051fc1b12cb7c8077584fd3 /extmod/modcryptolib.c | |
| parent | 9242e3d16d34dd15f1cd868681be45432b443c5a (diff) | |
py/obj: Change sizeof to offsetof in mp_obj_malloc_var macro.
Following b6a977848407a4ced45d118cf926bd915cc89dfb, to properly calculate
the size of the variable-length allocation.
Signed-off-by: Damien George <damien@micropython.org>
Diffstat (limited to 'extmod/modcryptolib.c')
| -rw-r--r-- | extmod/modcryptolib.c | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/extmod/modcryptolib.c b/extmod/modcryptolib.c index b33d8533f..66511b0f7 100644 --- a/extmod/modcryptolib.c +++ b/extmod/modcryptolib.c @@ -87,6 +87,7 @@ typedef struct _mp_obj_aes_t { #define AES_KEYTYPE_ENC 1 #define AES_KEYTYPE_DEC 2 uint8_t key_type : 2; + struct ctr_params ctr_params[]; // optional } mp_obj_aes_t; static inline bool is_ctr_mode(int block_mode) { @@ -98,8 +99,7 @@ static inline bool is_ctr_mode(int block_mode) { } static inline struct ctr_params *ctr_params_from_aes(mp_obj_aes_t *o) { - // ctr_params follows aes object struct - return (struct ctr_params *)&o[1]; + return &o->ctr_params[0]; } #if MICROPY_SSL_AXTLS @@ -228,7 +228,7 @@ STATIC mp_obj_t cryptolib_aes_make_new(const mp_obj_type_t *type, size_t n_args, mp_raise_ValueError(MP_ERROR_TEXT("mode")); } - mp_obj_aes_t *o = mp_obj_malloc_var(mp_obj_aes_t, struct ctr_params, !!is_ctr_mode(block_mode), type); + mp_obj_aes_t *o = mp_obj_malloc_var(mp_obj_aes_t, ctr_params, struct ctr_params, !!is_ctr_mode(block_mode), type); o->block_mode = block_mode; o->key_type = AES_KEYTYPE_NONE; |
