From 8b4936926c1785a9aa0f13e404f3e62613add5f2 Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Mon, 24 Mar 2025 18:18:34 +0200 Subject: [PATCH] fix(core): preallocate `storage.debug.reset_internal_entropy` It should allow GC to cleanup `int_entropy`, which can be allocated in random heap position, causing fragmentation. [no changelog] --- core/src/apps/management/reset_device/__init__.py | 2 +- core/src/storage/debug.py | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/apps/management/reset_device/__init__.py b/core/src/apps/management/reset_device/__init__.py index 4b3d8bf2ef..4634f47a5a 100644 --- a/core/src/apps/management/reset_device/__init__.py +++ b/core/src/apps/management/reset_device/__init__.py @@ -84,7 +84,7 @@ async def reset_device(msg: ResetDevice) -> Success: # generate internal entropy int_entropy = random.bytes(32, True) if __debug__: - storage.debug.reset_internal_entropy = int_entropy + storage.debug.reset_internal_entropy[:] = int_entropy entropy_commitment = ( hmac(hmac.SHA256, int_entropy, b"").digest() if msg.entropy_check else None diff --git a/core/src/storage/debug.py b/core/src/storage/debug.py index e674ee92ec..3a2f9b71aa 100644 --- a/core/src/storage/debug.py +++ b/core/src/storage/debug.py @@ -9,4 +9,5 @@ if __debug__: layout_watcher = False - reset_internal_entropy: bytes = b"" + reset_internal_entropy = bytearray(32) + reset_internal_entropy[:] = bytes()