From 77569f76ce87e66ab589ea8850079af184544a07 Mon Sep 17 00:00:00 2001 From: Jorge Martins Date: Fri, 7 Jul 2023 13:28:48 +0200 Subject: [PATCH 01/11] fix stax transfer ui --- src_nbgl/ui_stark_transfer.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src_nbgl/ui_stark_transfer.c b/src_nbgl/ui_stark_transfer.c index 28abe38..6abe161 100644 --- a/src_nbgl/ui_stark_transfer.c +++ b/src_nbgl/ui_stark_transfer.c @@ -52,8 +52,11 @@ static bool displayTransactionPage(uint8_t page, nbgl_pageContent_t *content) { pairs[count].value = strings.tmp.tmp; count++; } + pairs[count].item = "Token Account"; pairs[count].value = strings.tmp.tmp2; + count++; + content->type = TAG_VALUE_LIST; content->tagValueList.nbPairs = count; content->tagValueList.pairs = (nbgl_layoutTagValue_t *) pairs; @@ -67,7 +70,7 @@ static bool displayTransactionPage(uint8_t page, nbgl_pageContent_t *content) { sizeof(condAddressBuffer), &global_sha3, chainConfig->chainId), - pairs[0].item = "Cond. Address"; + pairs[0].item = "Cond. Address"; pairs[0].value = condAddressBuffer; stark_sign_display_condition_fact(); @@ -86,6 +89,7 @@ static bool displayTransactionPage(uint8_t page, nbgl_pageContent_t *content) { content->type = INFO_LONG_PRESS, content->infoLongPress.icon = get_app_icon(false); content->infoLongPress.text = "Review transaction"; content->infoLongPress.longPressText = SIGN_BUTTON; + return true; } return false; @@ -106,19 +110,19 @@ void ui_stark_transfer(bool selfTransfer, bool conditional) { char *subTitle; if (conditional) { if (selfTransfer) { - subTitle = (char *) "Conditionnal self transfer"; + subTitle = (char *) "Conditional Self Transfer"; } else { - subTitle = (char *) "Conditionnal transfer"; + subTitle = (char *) "Conditional Transfer"; } } else { if (selfTransfer) { - subTitle = (char *) "self transfer"; + subTitle = (char *) "Self Transfer"; } else { subTitle = (char *) "Transfer"; } } nbgl_useCaseReviewStart(get_app_icon(false), - "Review stark transaction", + "Review stark\ntransaction", subTitle, REJECT_BUTTON, reviewContinue, From aae40ecadad1e02bf460dcdbabbda3d3c376f3cb Mon Sep 17 00:00:00 2001 From: Jorge Martins Date: Fri, 7 Jul 2023 16:40:12 +0200 Subject: [PATCH 02/11] add missing return --- src_nbgl/ui_stark_transfer.c | 1 + 1 file changed, 1 insertion(+) diff --git a/src_nbgl/ui_stark_transfer.c b/src_nbgl/ui_stark_transfer.c index 6abe161..f569fe1 100644 --- a/src_nbgl/ui_stark_transfer.c +++ b/src_nbgl/ui_stark_transfer.c @@ -81,6 +81,7 @@ static bool displayTransactionPage(uint8_t page, nbgl_pageContent_t *content) { content->tagValueList.nbPairs = 2; content->tagValueList.pairs = (nbgl_layoutTagValue_t *) pairs; + return true; } else { page++; } From 569f6c27cac8ab741235b5da913020ac3bc345de Mon Sep 17 00:00:00 2001 From: Jorge Martins Date: Tue, 18 Jul 2023 14:58:31 +0200 Subject: [PATCH 03/11] remove code duplication --- src_nbgl/ui_approve_tx.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src_nbgl/ui_approve_tx.c b/src_nbgl/ui_approve_tx.c index 3722d8c..2a9464c 100644 --- a/src_nbgl/ui_approve_tx.c +++ b/src_nbgl/ui_approve_tx.c @@ -201,9 +201,6 @@ static void reviewContinueCommon(void) { if (tx_approval_context.fromPlugin) { // plugin id + max items + fees nbPairs += dataContext.tokenContext.pluginUiMaxItems + 1; - if (tx_approval_context.displayNetwork) { - nbPairs++; - } } else { nbPairs += 3; if (N_storage.displayNonce) { @@ -217,9 +214,10 @@ static void reviewContinueCommon(void) { nbPairs += 1; } #endif // HAVE_DOMAIN_NAME - if (tx_approval_context.displayNetwork) { + } + + if (tx_approval_context.displayNetwork) { nbPairs++; - } } useCaseTagValueList.pairs = NULL; From 493046e555ad2d47949d1171a8fc63be53ab7530 Mon Sep 17 00:00:00 2001 From: Jorge Martins Date: Tue, 18 Jul 2023 15:04:09 +0200 Subject: [PATCH 04/11] Showing Token Account not Token Amount --- src_nbgl/ui_stark_limit_order.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src_nbgl/ui_stark_limit_order.c b/src_nbgl/ui_stark_limit_order.c index ac4693e..89cfdbf 100644 --- a/src_nbgl/ui_stark_limit_order.c +++ b/src_nbgl/ui_stark_limit_order.c @@ -31,7 +31,7 @@ static bool displayTransactionPage(uint8_t page, nbgl_pageContent_t *content) { pairs[0].value = strings.common.fullAmount; pairs[1].item = "Buy"; pairs[1].value = strings.common.maxFee; - pairs[2].item = "Token amount"; + pairs[2].item = "Token Account"; pairs[2].value = strings.common.fullAddress; content->type = TAG_VALUE_LIST; From 7e2cef182b944eafec286cd241f01da83e253538 Mon Sep 17 00:00:00 2001 From: Jorge Martins Date: Tue, 18 Jul 2023 16:54:20 +0200 Subject: [PATCH 05/11] UX_INIT() works for bagl an nbgl --- src/main.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/main.c b/src/main.c index b11b39d..3399b86 100644 --- a/src/main.c +++ b/src/main.c @@ -978,12 +978,7 @@ void coin_main(libargs_t *args) { tmpCtx.transactionContext.currentItemIndex = 0; for (;;) { -#ifdef HAVE_BAGL UX_INIT(); -#endif // HAVE_BAGL -#ifdef HAVE_NBGL - nbgl_objInit(); -#endif // HAVE_NBGL BEGIN_TRY { TRY { From 2c2d933043c38052cec5bd5a88fc22c0ed49b4d2 Mon Sep 17 00:00:00 2001 From: Jorge Martins Date: Wed, 19 Jul 2023 11:59:37 +0200 Subject: [PATCH 06/11] No need to set nbMaxLinesForValue to 0, use NB_MAX_LINES_IN_REVIEW --- src_nbgl/ui_sign_712.c | 3 +-- src_nbgl/ui_sign_712_v0.c | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src_nbgl/ui_sign_712.c b/src_nbgl/ui_sign_712.c index d17a1d3..4d9aae7 100644 --- a/src_nbgl/ui_sign_712.c +++ b/src_nbgl/ui_sign_712.c @@ -29,7 +29,7 @@ static bool display_review_page(uint8_t page, nbgl_pageContent_t *content) { nbgl_getTextMaxLenInNbLines(BAGL_FONT_INTER_MEDIUM_32px, strings.tmp.tmp, SCREEN_WIDTH - (2 * BORDER_MARGIN), - 9, + NB_MAX_LINES_IN_REVIEW, &len); strings.tmp.tmp[len] = '\0'; @@ -39,7 +39,6 @@ static bool display_review_page(uint8_t page, nbgl_pageContent_t *content) { content->tagValueList.nbPairs = 1; content->tagValueList.pairs = &pair; content->tagValueList.wrapping = false; - content->tagValueList.nbMaxLinesForValue = 0; ret = true; break; diff --git a/src_nbgl/ui_sign_712_v0.c b/src_nbgl/ui_sign_712_v0.c index bc82563..ec38eea 100644 --- a/src_nbgl/ui_sign_712_v0.c +++ b/src_nbgl/ui_sign_712_v0.c @@ -30,7 +30,6 @@ static bool display_review_page(uint8_t page, nbgl_pageContent_t *content) { content->type = TAG_VALUE_LIST; content->tagValueList.nbPairs = 2; - content->tagValueList.nbMaxLinesForValue = 0; content->tagValueList.pairs = (nbgl_layoutTagValue_t *) pairs; } else if (page == 1) { g_position = UI_SIGNING_POSITION_SIGN; From 651dcc9503c9537b47b4451e0712bfe2210c0b5c Mon Sep 17 00:00:00 2001 From: Jorge Martins Date: Wed, 19 Jul 2023 14:48:06 +0200 Subject: [PATCH 07/11] fixed statement/lint --- src_nbgl/ui_approve_tx.c | 2 +- src_nbgl/ui_stark_transfer.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src_nbgl/ui_approve_tx.c b/src_nbgl/ui_approve_tx.c index 2a9464c..a6253c3 100644 --- a/src_nbgl/ui_approve_tx.c +++ b/src_nbgl/ui_approve_tx.c @@ -217,7 +217,7 @@ static void reviewContinueCommon(void) { } if (tx_approval_context.displayNetwork) { - nbPairs++; + nbPairs++; } useCaseTagValueList.pairs = NULL; diff --git a/src_nbgl/ui_stark_transfer.c b/src_nbgl/ui_stark_transfer.c index f569fe1..d7decfb 100644 --- a/src_nbgl/ui_stark_transfer.c +++ b/src_nbgl/ui_stark_transfer.c @@ -69,7 +69,7 @@ static bool displayTransactionPage(uint8_t page, nbgl_pageContent_t *content) { condAddressBuffer, sizeof(condAddressBuffer), &global_sha3, - chainConfig->chainId), + chainConfig->chainId); pairs[0].item = "Cond. Address"; pairs[0].value = condAddressBuffer; From e28dbbf81745c389c6d5b050c0724e7fcf5ed712 Mon Sep 17 00:00:00 2001 From: Jorge Martins Date: Fri, 21 Jul 2023 11:16:38 +0200 Subject: [PATCH 08/11] ui_settings HAVE_EIP712_FULL_SUPPORT inconsistency --- src_nbgl/ui_settings.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src_nbgl/ui_settings.c b/src_nbgl/ui_settings.c index 9a0ca33..d6c42bc 100644 --- a/src_nbgl/ui_settings.c +++ b/src_nbgl/ui_settings.c @@ -56,12 +56,14 @@ static bool navCallback(uint8_t page, nbgl_pageContent_t* content) { break; case 2: +#ifdef HAVE_EIP712_FULL_SUPPORT switches[index++] = (nbgl_layoutSwitch_t){.initState = N_storage.verbose_eip712 ? ON_STATE : OFF_STATE, .text = "Verbose EIP712", .subText = "Ignore filtering and\ndisplay raw content", .token = EIP712_VERBOSE_TOKEN, .tuneId = TUNE_TAP_CASUAL}; +#endif // HAVE_EIP712_FULL_SUPPORT #ifdef HAVE_DOMAIN_NAME switches[index++] = (nbgl_layoutSwitch_t){ .initState = N_storage.verbose_domain_name ? ON_STATE : OFF_STATE, @@ -116,5 +118,9 @@ static void controlsCallback(int token, uint8_t index) { } void ui_menu_settings(void) { - nbgl_useCaseSettings(APPNAME " settings", 0, 3, false, ui_idle, navCallback, controlsCallback); + uint8_t nb_screens = 2; +#ifdef HAVE_EIP712_FULL_SUPPORT || HAVE_DOMAIN_NAME + nb_screens += 1; +#endif + nbgl_useCaseSettings(APPNAME " settings", 0, nb_screens, false, ui_idle, navCallback, controlsCallback); } From beea483d661a0e75db73411d0f05271b0f2dbfcd Mon Sep 17 00:00:00 2001 From: Jorge Martins Date: Fri, 21 Jul 2023 11:19:31 +0200 Subject: [PATCH 09/11] lint + fix or condition --- src_nbgl/ui_settings.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src_nbgl/ui_settings.c b/src_nbgl/ui_settings.c index d6c42bc..9d3656c 100644 --- a/src_nbgl/ui_settings.c +++ b/src_nbgl/ui_settings.c @@ -119,8 +119,14 @@ static void controlsCallback(int token, uint8_t index) { void ui_menu_settings(void) { uint8_t nb_screens = 2; -#ifdef HAVE_EIP712_FULL_SUPPORT || HAVE_DOMAIN_NAME +#if defined(HAVE_EIP712_FULL_SUPPORT) || defined(HAVE_DOMAIN_NAME) nb_screens += 1; #endif - nbgl_useCaseSettings(APPNAME " settings", 0, nb_screens, false, ui_idle, navCallback, controlsCallback); + nbgl_useCaseSettings(APPNAME " settings", + 0, + nb_screens, + false, + ui_idle, + navCallback, + controlsCallback); } From 530cfdab73b30cccbf1d2ea3ea5aa616ece37945 Mon Sep 17 00:00:00 2001 From: Jorge Martins Date: Fri, 21 Jul 2023 15:15:10 +0200 Subject: [PATCH 10/11] use NB_MAX_LINES_IN_REVIEW --- src_nbgl/ui_sign_message.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src_nbgl/ui_sign_message.c b/src_nbgl/ui_sign_message.c index 4577fa6..6d85f80 100644 --- a/src_nbgl/ui_sign_message.c +++ b/src_nbgl/ui_sign_message.c @@ -46,7 +46,7 @@ static bool display_message(nbgl_pageContent_t *content) { reached = nbgl_getTextMaxLenInNbLines(BAGL_FONT_INTER_MEDIUM_32px, (char *) g_stax_shared_buffer, SCREEN_WIDTH - (2 * BORDER_MARGIN), - 9, + NB_MAX_LINES_IN_REVIEW, &len); stringsTmpTmpIdx = len - eip191MessageIdx; @@ -71,7 +71,7 @@ static bool display_message(nbgl_pageContent_t *content) { content->tagValueList.nbPairs = 1; content->tagValueList.pairs = &pair; content->tagValueList.smallCaseForValue = false; - content->tagValueList.nbMaxLinesForValue = 9; + content->tagValueList.nbMaxLinesForValue = NB_MAX_LINES_IN_REVIEW; content->tagValueList.wrapping = false; if ((g_action != UI_191_ACTION_IDLE) && (stringsTmpTmpIdx >= strlen(strings.tmp.tmp))) { From 0bc9ea00ac91b82c6fb1430fbc4b5c84b5ed818f Mon Sep 17 00:00:00 2001 From: Jorge Martins Date: Thu, 27 Jul 2023 10:40:29 +0200 Subject: [PATCH 11/11] TLV: raise error when length = 0 --- src_features/provideDomainName/cmd_provide_domain_name.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src_features/provideDomainName/cmd_provide_domain_name.c b/src_features/provideDomainName/cmd_provide_domain_name.c index 8cd974b..e1d14a4 100644 --- a/src_features/provideDomainName/cmd_provide_domain_name.c +++ b/src_features/provideDomainName/cmd_provide_domain_name.c @@ -479,7 +479,7 @@ static bool parse_der_value(const s_tlv_payload *payload, size_t *offset, uint32 if ((*offset + byte_length) > payload->size) { PRINTF("TLV payload too small for DER encoded value\n"); } else { - if (byte_length > sizeof(buf)) { + if (byte_length > sizeof(buf) || byte_length == 0) { PRINTF("Unexpectedly long DER-encoded value (%u bytes)\n", byte_length); } else { memset(buf, 0, (sizeof(buf) - byte_length));