From a48b942fd148cbe406f2e95745119570dd13ed11 Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Thu, 21 Aug 2025 22:37:23 +0300 Subject: [PATCH 1/2] fix(core): avoid infinite THP error loop [no changelog] --- core/src/trezor/wire/thp/session_context.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/src/trezor/wire/thp/session_context.py b/core/src/trezor/wire/thp/session_context.py index 0c23bb70a7c..6253a011713 100644 --- a/core/src/trezor/wire/thp/session_context.py +++ b/core/src/trezor/wire/thp/session_context.py @@ -56,14 +56,15 @@ async def handle(self, message: Message | None = None) -> None: if __debug__: log.exception(__name__, e, iface=self.iface) await self.write(failure(e)) + return except UnexpectedMessageException as unexpected: # The workflow was interrupted by an unexpected message. We need to # process it as if it was a new message... message = unexpected.msg except Exception as exc: - # Log and try again. if __debug__: log.exception(__name__, exc, iface=self.iface) + return async def _read_next_message(self) -> Message: while True: From 2f99447ca3eb9cd81183fe30f3e85d3b662e56fd Mon Sep 17 00:00:00 2001 From: Roman Zeyde Date: Thu, 21 Aug 2025 22:46:15 +0300 Subject: [PATCH 2/2] chore(core): fix log formatting in `trezor/wire/thp/channel.py` [no changelog] --- core/src/trezor/wire/thp/channel.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/src/trezor/wire/thp/channel.py b/core/src/trezor/wire/thp/channel.py index dfe875b6397..d6ce8a28813 100644 --- a/core/src/trezor/wire/thp/channel.py +++ b/core/src/trezor/wire/thp/channel.py @@ -247,7 +247,7 @@ async def recv_payload( if expected_ctrl_byte is None or not expected_ctrl_byte(ctrl_byte): if __debug__: - self._log("Unexpected control byte", utils.hexlify_if_bytes(msg)) + self._log("Unexpected control byte: ", utils.hexlify_if_bytes(msg)) raise ThpError("Unexpected control byte") # 2: Handle message with unexpected sequential bit