diff --git a/legacy/firmware/fsm.c b/legacy/firmware/fsm.c index 366353fd95..85888c74c8 100644 --- a/legacy/firmware/fsm.c +++ b/legacy/firmware/fsm.c @@ -416,6 +416,16 @@ void fsm_abortWorkflows(void) { #endif } +void fsm_postMsgCleanup(MessageType message_type) { + if (message_type != MessageType_MessageType_DoPreauthorized) { + authorization_type = 0; + } + + if (message_type != MessageType_MessageType_UnlockPath) { + unlock_path = 0; + } +} + bool fsm_layoutPathWarning(void) { layoutDialogSwipe(&bmp_icon_warning, _("Abort"), _("Continue"), NULL, _("Wrong address path"), _("for selected coin."), NULL, diff --git a/legacy/firmware/fsm.h b/legacy/firmware/fsm.h index f20dd7e19a..79b245efe4 100644 --- a/legacy/firmware/fsm.h +++ b/legacy/firmware/fsm.h @@ -161,5 +161,6 @@ bool fsm_getOwnershipId(uint8_t *script_pubkey, size_t script_pubkey_size, uint8_t ownership_id[32]); void fsm_abortWorkflows(void); +void fsm_postMsgCleanup(MessageType message_type); #endif diff --git a/legacy/firmware/messages.c b/legacy/firmware/messages.c index 634640db90..82b6e47bfc 100644 --- a/legacy/firmware/messages.c +++ b/legacy/firmware/messages.c @@ -62,6 +62,7 @@ void MessageProcessFunc(char type, char dir, uint16_t msg_id, void *ptr) { while (m->type) { if (type == m->type && dir == m->dir && msg_id == m->msg_id) { m->process_func(ptr); + fsm_postMsgCleanup(msg_id); return; } m++;