refactor(core): replace m_new_obj_with_finaliser
What changed, and why it matters
This commit is a routine code cleanup in the Trezor firmware's embedded MicroPython modules. It replaces an older, two-step object allocation pattern with a newer helper that allocates memory and sets the object type in one step. The change touches many cryptographic object constructors but does not alter security logic, input validation, or behavior. It is best understood as a maintenance refactor to stay compatible with upstream MicroPython, not a security fix.
No security action required. Treat as normal dependency/maintenance refactor. If reviewing for supply-chain risk, verify that the upstream MicroPython commit 971617196644775905fd821c39c6a7771b63dbaf is correctly referenced and that the new macro behaves identically to the old two-step pattern.
Security signals we found
No security-relevant logic changes observed
No input validation changes
No memory safety bug fixes (e.g., no overflow, use-after-free, or uninitialized memory fixes)
No finalizer behavior changes
Commit title and message are purely refactor-oriented and explicitly reference upstream MicroPython API change
[no changelog] tag indicates no user-visible or security-relevant change
Evidence from the diff
The commit replaces all uses of m_new_obj_with_finaliser(TYPE) followed by o->base.type = type with mp_obj_malloc_with_finaliser(TYPE, type). This is a MicroPython API migration: upstream MicroPython removed the m_new_obj_with_finaliser macro in commit 971617196644775905fd821c39c6a7771b63dbaf and replaced it with mp_obj_malloc_with_finaliser, which combines allocation and type assignment. The diff is purely mechanical across 19 files covering crypto primitives (AES, AES-GCM, BLAKE, SHA, HMAC, PBKDF2, BIP32/Cardano/Monero) and the USB I/O object. No logic, bounds checks, or finalizer behavior changes.
Changed components
core/embed/upymod/modtrezorcrypto/* (multiple crypto module bindings)core/embed/upymod/modtrezorio/modtrezorio-usb.hInspect captured patch +40 / −56
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aes.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aes.h
index a770a459..ffc184cd 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aes.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aes.h
@@ -81,8 +81,7 @@ STATIC mp_obj_t mod_trezorcrypto_AES_make_new(const mp_obj_type_t *type,
}
}
- mp_obj_AES_t *o = m_new_obj_with_finaliser(mp_obj_AES_t);
- o->base.type = type;
+ mp_obj_AES_t *o = mp_obj_malloc_with_finaliser(mp_obj_AES_t, type);
o->mode = mode;
if (iv.len != 0) {
memcpy(o->iv, iv.buf, AES_BLOCK_SIZE);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aesgcm.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aesgcm.h
index 20fb774e..f6bcc78d 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aesgcm.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-aesgcm.h
@@ -58,8 +58,7 @@ STATIC mp_obj_t mod_trezorcrypto_AesGcm_make_new(const mp_obj_type_t *type,
"Invalid length of key (has to be 128, 192 or 256 bits)."));
}
- mp_obj_AesGcm_t *o = m_new_obj_with_finaliser(mp_obj_AesGcm_t);
- o->base.type = type;
+ mp_obj_AesGcm_t *o = mp_obj_malloc_with_finaliser(mp_obj_AesGcm_t, type);
o->state = STATE_INIT;
if (gcm_init_and_key(key.buf, key.len, &(o->ctx)) != RETURN_GOOD ||
gcm_init_message(iv.buf, iv.len, &(o->ctx)) != RETURN_GOOD) {
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip32.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip32.h
index d8b8f992..2d8f5747 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip32.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-bip32.h
@@ -115,8 +115,7 @@ STATIC mp_obj_t mod_trezorcrypto_HDNode_make_new(const mp_obj_type_t *type,
mp_raise_ValueError(MP_ERROR_TEXT("curve_name is invalid"));
}
- mp_obj_HDNode_t *o = m_new_obj_with_finaliser(mp_obj_HDNode_t);
- o->base.type = type;
+ mp_obj_HDNode_t *o = mp_obj_malloc_with_finaliser(mp_obj_HDNode_t, type);
o->fingerprint = fingerprint;
o->hdnode.depth = depth;
o->hdnode.child_num = child_num;
@@ -249,8 +248,8 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_2(mod_trezorcrypto_HDNode_serialize_public_obj,
/// """
STATIC mp_obj_t mod_trezorcrypto_HDNode_clone(mp_obj_t self) {
mp_obj_HDNode_t *o = MP_OBJ_TO_PTR(self);
- mp_obj_HDNode_t *copy = m_new_obj_with_finaliser(mp_obj_HDNode_t);
- copy->base.type = &mod_trezorcrypto_HDNode_type;
+ mp_obj_HDNode_t *copy = mp_obj_malloc_with_finaliser(
+ mp_obj_HDNode_t, &mod_trezorcrypto_HDNode_type);
copy->hdnode = o->hdnode;
copy->fingerprint = o->fingerprint;
return MP_OBJ_FROM_PTR(copy);
@@ -542,8 +541,8 @@ STATIC mp_obj_t mod_trezorcrypto_bip32_from_seed(mp_obj_t seed,
mp_raise_ValueError(MP_ERROR_TEXT("Failed to derive the root node"));
}
- mp_obj_HDNode_t *o = m_new_obj_with_finaliser(mp_obj_HDNode_t);
- o->base.type = &mod_trezorcrypto_HDNode_type;
+ mp_obj_HDNode_t *o = mp_obj_malloc_with_finaliser(
+ mp_obj_HDNode_t, &mod_trezorcrypto_HDNode_type);
o->hdnode = hdnode;
o->fingerprint = 0;
return MP_OBJ_FROM_PTR(o);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake256.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake256.h
index f8683f5d..aaf981df 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake256.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake256.h
@@ -45,8 +45,7 @@ STATIC mp_obj_t mod_trezorcrypto_Blake256_make_new(const mp_obj_type_t *type,
size_t n_args, size_t n_kw,
const mp_obj_t *args) {
mp_arg_check_num(n_args, n_kw, 0, 1, false);
- mp_obj_Blake256_t *o = m_new_obj_with_finaliser(mp_obj_Blake256_t);
- o->base.type = type;
+ mp_obj_Blake256_t *o = mp_obj_malloc_with_finaliser(mp_obj_Blake256_t, type);
blake256_Init(&(o->ctx));
// constructor called with bytes/str as first parameter
if (n_args == 1) {
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2b.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2b.h
index a8fb6625..dc3f988e 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2b.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2b.h
@@ -84,8 +84,7 @@ STATIC mp_obj_t mod_trezorcrypto_Blake2b_make_new(const mp_obj_type_t *type,
MP_ERROR_TEXT("Cannot use Blake2b key and personal at the same time"));
}
- mp_obj_Blake2b_t *o = m_new_obj_with_finaliser(mp_obj_Blake2b_t);
- o->base.type = type;
+ mp_obj_Blake2b_t *o = mp_obj_malloc_with_finaliser(mp_obj_Blake2b_t, type);
int res = 0;
if (key_len > 0) {
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2s.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2s.h
index fe55d616..55272706 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2s.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-blake2s.h
@@ -84,8 +84,7 @@ STATIC mp_obj_t mod_trezorcrypto_Blake2s_make_new(const mp_obj_type_t *type,
MP_ERROR_TEXT("Cannot use Blake2s key and personal at the same time"));
}
- mp_obj_Blake2s_t *o = m_new_obj_with_finaliser(mp_obj_Blake2s_t);
- o->base.type = type;
+ mp_obj_Blake2s_t *o = mp_obj_malloc_with_finaliser(mp_obj_Blake2s_t, type);
int res = 0;
if (key_len > 0) {
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-cardano.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-cardano.h
index 80744c64..7a159fc6 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-cardano.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-cardano.h
@@ -104,8 +104,8 @@ STATIC mp_obj_t mod_trezorcrypto_from_secret(mp_obj_t secret) {
mp_raise_ValueError(MP_ERROR_TEXT("Invalid secret length"));
}
- mp_obj_HDNode_t *o = m_new_obj_with_finaliser(mp_obj_HDNode_t);
- o->base.type = &mod_trezorcrypto_HDNode_type;
+ mp_obj_HDNode_t *o = mp_obj_malloc_with_finaliser(
+ mp_obj_HDNode_t, &mod_trezorcrypto_HDNode_type);
const int res = hdnode_from_secret_cardano(bufinfo.buf, &o->hdnode);
if (res != 1) {
m_del_obj(mp_obj_HDNode_t, o);
@@ -147,8 +147,8 @@ STATIC mp_obj_t mod_trezorcrypto_from_seed_slip23(mp_obj_t seed) {
MP_ERROR_TEXT("Unexpected failure in constructing Cardano node."));
}
- mp_obj_HDNode_t *o = m_new_obj_with_finaliser(mp_obj_HDNode_t);
- o->base.type = &mod_trezorcrypto_HDNode_type;
+ mp_obj_HDNode_t *o = mp_obj_malloc_with_finaliser(
+ mp_obj_HDNode_t, &mod_trezorcrypto_HDNode_type);
o->hdnode = hdnode;
o->fingerprint = hdnode_fingerprint(&o->hdnode);
return MP_OBJ_FROM_PTR(o);
@@ -184,8 +184,8 @@ STATIC mp_obj_t mod_trezorcrypto_from_seed_ledger(mp_obj_t seed) {
MP_ERROR_TEXT("Unexpected failure in constructing Cardano node."));
}
- mp_obj_HDNode_t *o = m_new_obj_with_finaliser(mp_obj_HDNode_t);
- o->base.type = &mod_trezorcrypto_HDNode_type;
+ mp_obj_HDNode_t *o = mp_obj_malloc_with_finaliser(
+ mp_obj_HDNode_t, &mod_trezorcrypto_HDNode_type);
o->hdnode = hdnode;
o->fingerprint = hdnode_fingerprint(&o->hdnode);
return MP_OBJ_FROM_PTR(o);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-chacha20poly1305.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-chacha20poly1305.h
index 17d708ce..1721dd45 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-chacha20poly1305.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-chacha20poly1305.h
@@ -61,9 +61,8 @@ STATIC mp_obj_t mod_trezorcrypto_ChaCha20Poly1305_make_new(
mp_raise_ValueError(MP_ERROR_TEXT("Invalid length of nonce"));
}
mp_obj_ChaCha20Poly1305_t *o =
- m_new_obj_with_finaliser(mp_obj_ChaCha20Poly1305_t);
+ mp_obj_malloc_with_finaliser(mp_obj_ChaCha20Poly1305_t, type);
rfc7539_init(&(o->ctx), key.buf, nonce.buf);
- o->base.type = type;
o->alen = 0;
o->plen = 0;
o->state = INIT;
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-groestl.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-groestl.h
index d9297339..e54b722e 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-groestl.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-groestl.h
@@ -49,8 +49,8 @@ STATIC mp_obj_t mod_trezorcrypto_Groestl512_make_new(const mp_obj_type_t *type,
size_t n_args, size_t n_kw,
const mp_obj_t *args) {
mp_arg_check_num(n_args, n_kw, 0, 1, false);
- mp_obj_Groestl512_t *o = m_new_obj_with_finaliser(mp_obj_Groestl512_t);
- o->base.type = type;
+ mp_obj_Groestl512_t *o =
+ mp_obj_malloc_with_finaliser(mp_obj_Groestl512_t, type);
groestl512_Init(&(o->ctx));
if (n_args == 1) {
mod_trezorcrypto_Groestl512_update(MP_OBJ_FROM_PTR(o), args[0]);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-hmac.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-hmac.h
index c7b1458d..a230f02e 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-hmac.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-hmac.h
@@ -65,8 +65,7 @@ STATIC mp_obj_t mod_trezorcrypto_Hmac_make_new(const mp_obj_type_t *type,
key.buf = "";
}
- mp_obj_Hmac_t *o = m_new_obj_with_finaliser(mp_obj_Hmac_t);
- o->base.type = type;
+ mp_obj_Hmac_t *o = mp_obj_malloc_with_finaliser(mp_obj_Hmac_t, type);
o->hashtype = trezor_obj_get_uint(args[0]);
if (o->hashtype == SHA256) {
hmac_sha256_Init(&(o->ctx256), key.buf, key.len);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-monero.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-monero.h
index 1cb9ae9b..b48fc97a 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-monero.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-monero.h
@@ -79,8 +79,8 @@ static inline void assert_scalar(const mp_obj_t o) {
}
STATIC mp_obj_t mp_obj_new_scalar() {
- mp_obj_bignum256modm_t *o = m_new_obj_with_finaliser(mp_obj_bignum256modm_t);
- o->base.type = &mod_trezorcrypto_monero_bignum256modm_type;
+ mp_obj_bignum256modm_t *o = mp_obj_malloc_with_finaliser(
+ mp_obj_bignum256modm_t, &mod_trezorcrypto_monero_bignum256modm_type);
set256_modm(o->p, 0);
return MP_OBJ_FROM_PTR(o);
}
@@ -95,8 +95,8 @@ STATIC mp_obj_t mp_obj_new_scalar_r(mp_obj_t r) {
}
STATIC mp_obj_t mp_obj_new_ge25519() {
- mp_obj_ge25519_t *o = m_new_obj_with_finaliser(mp_obj_ge25519_t);
- o->base.type = &mod_trezorcrypto_monero_ge25519_type;
+ mp_obj_ge25519_t *o = mp_obj_malloc_with_finaliser(
+ mp_obj_ge25519_t, &mod_trezorcrypto_monero_ge25519_type);
ge25519_set_neutral(&o->p);
return MP_OBJ_FROM_PTR(o);
}
@@ -151,8 +151,7 @@ STATIC mp_obj_t mod_trezorcrypto_monero_ge25519_make_new(
const mp_obj_type_t *type, size_t n_args, size_t n_kw,
const mp_obj_t *args) {
mp_arg_check_num(n_args, n_kw, 0, 1, false);
- mp_obj_ge25519_t *o = m_new_obj_with_finaliser(mp_obj_ge25519_t);
- o->base.type = type;
+ mp_obj_ge25519_t *o = mp_obj_malloc_with_finaliser(mp_obj_ge25519_t, type);
if (n_args == 0 || args[0] == mp_const_none) {
ge25519_set_neutral(&o->p);
@@ -190,8 +189,8 @@ STATIC mp_obj_t mod_trezorcrypto_monero_bignum256modm_make_new(
const mp_obj_type_t *type, size_t n_args, size_t n_kw,
const mp_obj_t *args) {
mp_arg_check_num(n_args, n_kw, 0, 1, false);
- mp_obj_bignum256modm_t *o = m_new_obj_with_finaliser(mp_obj_bignum256modm_t);
- o->base.type = type;
+ mp_obj_bignum256modm_t *o =
+ mp_obj_malloc_with_finaliser(mp_obj_bignum256modm_t, type);
if (n_args == 0 || args[0] == mp_const_none) {
set256_modm(o->p, 0);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h
index 0c818e6f..fe386beb 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-pbkdf2.h
@@ -78,8 +78,7 @@ STATIC mp_obj_t mod_trezorcrypto_Pbkdf2_make_new(const mp_obj_type_t *type,
}
mp_uint_t prf = trezor_obj_get_uint(args[0]);
- mp_obj_Pbkdf2_t *o = m_new_obj_with_finaliser(mp_obj_Pbkdf2_t);
- o->base.type = type;
+ mp_obj_Pbkdf2_t *o = mp_obj_malloc_with_finaliser(mp_obj_Pbkdf2_t, type);
o->prf = prf;
if (o->prf == PRF_HMAC_SHA256) {
pbkdf2_hmac_sha256_Init(&(o->ctx256), password.buf, password.len, salt.buf,
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-ripemd160.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-ripemd160.h
index c9eca332..8136129f 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-ripemd160.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-ripemd160.h
@@ -45,8 +45,8 @@ STATIC mp_obj_t mod_trezorcrypto_Ripemd160_make_new(const mp_obj_type_t *type,
size_t n_args, size_t n_kw,
const mp_obj_t *args) {
mp_arg_check_num(n_args, n_kw, 0, 1, false);
- mp_obj_Ripemd160_t *o = m_new_obj_with_finaliser(mp_obj_Ripemd160_t);
- o->base.type = type;
+ mp_obj_Ripemd160_t *o =
+ mp_obj_malloc_with_finaliser(mp_obj_Ripemd160_t, type);
ripemd160_init(&(o->ctx));
// constructor called with bytes/str as first parameter
if (n_args == 1) {
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha1.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha1.h
index 8f9c5a41..d52bc8eb 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha1.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha1.h
@@ -45,8 +45,7 @@ STATIC mp_obj_t mod_trezorcrypto_Sha1_make_new(const mp_obj_type_t *type,
size_t n_args, size_t n_kw,
const mp_obj_t *args) {
mp_arg_check_num(n_args, n_kw, 0, 1, false);
- mp_obj_Sha1_t *o = m_new_obj_with_finaliser(mp_obj_Sha1_t);
- o->base.type = type;
+ mp_obj_Sha1_t *o = mp_obj_malloc_with_finaliser(mp_obj_Sha1_t, type);
sha1_Init(&(o->ctx));
// constructor called with bytes/str as first parameter
if (n_args == 1) {
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha256.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha256.h
index d1b76a26..c4b5382f 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha256.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha256.h
@@ -45,8 +45,7 @@ STATIC mp_obj_t mod_trezorcrypto_Sha256_make_new(const mp_obj_type_t *type,
size_t n_args, size_t n_kw,
const mp_obj_t *args) {
mp_arg_check_num(n_args, n_kw, 0, 1, false);
- mp_obj_Sha256_t *o = m_new_obj_with_finaliser(mp_obj_Sha256_t);
- o->base.type = type;
+ mp_obj_Sha256_t *o = mp_obj_malloc_with_finaliser(mp_obj_Sha256_t, type);
sha256_Init(&(o->ctx));
// constructor called with bytes/str as first parameter
if (n_args == 1) {
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-256.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-256.h
index 282ba96b..63b09a04 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-256.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-256.h
@@ -58,8 +58,7 @@ STATIC mp_obj_t mod_trezorcrypto_Sha3_256_make_new(const mp_obj_type_t *type,
mp_arg_parse_all_kw_array(n_args, n_kw, args, MP_ARRAY_SIZE(allowed_args),
allowed_args, vals);
- mp_obj_Sha3_256_t *o = m_new_obj_with_finaliser(mp_obj_Sha3_256_t);
- o->base.type = type;
+ mp_obj_Sha3_256_t *o = mp_obj_malloc_with_finaliser(mp_obj_Sha3_256_t, type);
o->keccak = 0;
sha3_256_Init(&(o->ctx));
if (vals[1].u_obj != MP_OBJ_NULL) {
@@ -116,8 +115,8 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Sha3_256_digest_obj,
STATIC mp_obj_t mod_trezorcrypto_Sha3_256_copy(size_t n_args,
const mp_obj_t *args) {
mp_obj_Sha3_256_t *o = MP_OBJ_TO_PTR(args[0]);
- mp_obj_Sha3_256_t *out = m_new_obj_with_finaliser(mp_obj_Sha3_256_t);
- out->base.type = o->base.type;
+ mp_obj_Sha3_256_t *out =
+ mp_obj_malloc_with_finaliser(mp_obj_Sha3_256_t, o->base.type);
out->keccak = o->keccak;
memcpy(&(out->ctx), &(o->ctx), sizeof(SHA3_CTX));
return MP_OBJ_FROM_PTR(out);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-512.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-512.h
index 47bd9394..27438a56 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-512.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha3-512.h
@@ -58,8 +58,7 @@ STATIC mp_obj_t mod_trezorcrypto_Sha3_512_make_new(const mp_obj_type_t *type,
mp_arg_parse_all_kw_array(n_args, n_kw, args, MP_ARRAY_SIZE(allowed_args),
allowed_args, vals);
- mp_obj_Sha3_512_t *o = m_new_obj_with_finaliser(mp_obj_Sha3_512_t);
- o->base.type = type;
+ mp_obj_Sha3_512_t *o = mp_obj_malloc_with_finaliser(mp_obj_Sha3_512_t, type);
o->keccak = 0;
sha3_512_Init(&(o->ctx));
if (vals[1].u_obj != MP_OBJ_NULL) {
@@ -116,8 +115,8 @@ STATIC MP_DEFINE_CONST_FUN_OBJ_1(mod_trezorcrypto_Sha3_512_digest_obj,
STATIC mp_obj_t mod_trezorcrypto_Sha3_512_copy(size_t n_args,
const mp_obj_t *args) {
mp_obj_Sha3_512_t *o = MP_OBJ_TO_PTR(args[0]);
- mp_obj_Sha3_512_t *out = m_new_obj_with_finaliser(mp_obj_Sha3_512_t);
- out->base.type = o->base.type;
+ mp_obj_Sha3_512_t *out =
+ mp_obj_malloc_with_finaliser(mp_obj_Sha3_512_t, o->base.type);
out->keccak = o->keccak;
memcpy(&(out->ctx), &(o->ctx), sizeof(SHA3_CTX));
return MP_OBJ_FROM_PTR(out);
diff --git a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha512.h b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha512.h
index 517ac49d..b17d3c10 100644
--- a/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha512.h
+++ b/core/embed/upymod/modtrezorcrypto/modtrezorcrypto-sha512.h
@@ -45,8 +45,7 @@ STATIC mp_obj_t mod_trezorcrypto_Sha512_make_new(const mp_obj_type_t *type,
size_t n_args, size_t n_kw,
const mp_obj_t *args) {
mp_arg_check_num(n_args, n_kw, 0, 1, false);
- mp_obj_Sha512_t *o = m_new_obj_with_finaliser(mp_obj_Sha512_t);
- o->base.type = type;
+ mp_obj_Sha512_t *o = mp_obj_malloc_with_finaliser(mp_obj_Sha512_t, type);
sha512_Init(&(o->ctx));
if (n_args == 1) {
mod_trezorcrypto_Sha512_update(MP_OBJ_FROM_PTR(o), args[0]);
diff --git a/core/embed/upymod/modtrezorio/modtrezorio-usb.h b/core/embed/upymod/modtrezorio/modtrezorio-usb.h
index 77c6b564..48a569b5 100644
--- a/core/embed/upymod/modtrezorio/modtrezorio-usb.h
+++ b/core/embed/upymod/modtrezorio/modtrezorio-usb.h
@@ -49,8 +49,7 @@ static const char *get_0str(mp_obj_t o, size_t min_len, size_t max_len) {
STATIC mp_obj_t mod_trezorio_USB_make_new(const mp_obj_type_t *type,
size_t n_args, size_t n_kw,
const mp_obj_t *args) {
- mp_obj_USB_t *o = m_new_obj_with_finaliser(mp_obj_USB_t);
- o->base.type = type;
+ mp_obj_USB_t *o = mp_obj_malloc_with_finaliser(mp_obj_USB_t, type);
return MP_OBJ_FROM_PTR(o);
}
Why this scored 18/100
Community notes
Notes can correct, qualify, or add evidence to the AI analysis. Every note shown here has been validated by a human moderator.
The AI analysis stands alone for now. Submit a note if you can add evidence or important context.