From 280a44715ffc82cab2b80fe0d88068934ec20f43 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Thu, 12 Oct 2023 16:18:03 +0200 Subject: [PATCH 1/3] update sdks and zxlib --- deps/ledger-zxlib | 2 +- deps/nanos-secure-sdk | 2 +- deps/nanosplus-secure-sdk | 2 +- deps/nanox-secure-sdk | 2 +- deps/stax-secure-sdk | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/deps/ledger-zxlib b/deps/ledger-zxlib index b5e1e7d6..52dfdeae 160000 --- a/deps/ledger-zxlib +++ b/deps/ledger-zxlib @@ -1 +1 @@ -Subproject commit b5e1e7d6d99153cd42d0cca19c3acd66aed39340 +Subproject commit 52dfdeae81bb0b50cf3332f4690ed5c978f15f27 diff --git a/deps/nanos-secure-sdk b/deps/nanos-secure-sdk index 12e5f6f8..30189cfd 160000 --- a/deps/nanos-secure-sdk +++ b/deps/nanos-secure-sdk @@ -1 +1 @@ -Subproject commit 12e5f6f875bf5deb9464b944f50079aaca1a3b98 +Subproject commit 30189cfd070040e5c144d4dab103d549302dcfff diff --git a/deps/nanosplus-secure-sdk b/deps/nanosplus-secure-sdk index 94d7aa34..45ccba9c 160000 --- a/deps/nanosplus-secure-sdk +++ b/deps/nanosplus-secure-sdk @@ -1 +1 @@ -Subproject commit 94d7aa340f6393bedd83fe4275497a2898d2273c +Subproject commit 45ccba9cd72eaae0d1305b9d519d3702fb4e138b diff --git a/deps/nanox-secure-sdk b/deps/nanox-secure-sdk index 7b829b70..2d6e2e0d 160000 --- a/deps/nanox-secure-sdk +++ b/deps/nanox-secure-sdk @@ -1 +1 @@ -Subproject commit 7b829b7044b8ecdff07bc5d1b61b644e9342e584 +Subproject commit 2d6e2e0d2eda2a09bc79bdf57b6b2e3d708eec1d diff --git a/deps/stax-secure-sdk b/deps/stax-secure-sdk index af0acac6..cabc1590 160000 --- a/deps/stax-secure-sdk +++ b/deps/stax-secure-sdk @@ -1 +1 @@ -Subproject commit af0acac6afaadbabffe0571d48652406f49dd5a7 +Subproject commit cabc159007c6d257636ce8fb5b779b7b69f78c91 From 99da2b3f164edb7cd145d8330fd8e3fac7319099 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Thu, 12 Oct 2023 16:18:09 +0200 Subject: [PATCH 2/3] fix some issues --- app/src/candid/nns_parser.c | 3 +++ app/src/parser_print_helper.c | 9 +++++++-- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/app/src/candid/nns_parser.c b/app/src/candid/nns_parser.c index d640c872..bc178a8b 100644 --- a/app/src/candid/nns_parser.c +++ b/app/src/candid/nns_parser.c @@ -147,6 +147,9 @@ __Z_INLINE parser_error_t readCommandSpawn(parser_context_t *ctx, candid_transac CHECK_PARSER_ERR(readCandidByte(ctx, &has_principal)) if (has_principal) { CHECK_PARSER_ERR(readCandidByte(ctx, &val->command.spawn.new_controller.len)) + if (val->command.spawn.new_controller.len > DFINITY_PRINCIPAL_LEN) { + return parser_unexpected_value; + } CHECK_PARSER_ERR(readCandidBytes(ctx, val->command.spawn.new_controller.ptr, val->command.spawn.new_controller.len)) } } diff --git a/app/src/parser_print_helper.c b/app/src/parser_print_helper.c index a4eede77..3021a436 100644 --- a/app/src/parser_print_helper.c +++ b/app/src/parser_print_helper.c @@ -164,10 +164,12 @@ parser_error_t page_principal_with_subaccount(const uint8_t *sender, uint16_t se uint16_t principalLen = sizeof(text); zxerr_t err = zxerr_unknown; err = crypto_principalToTextual(sender, senderLen, text_ptr, &principalLen); + // maximum length without separators is 53 if (err != zxerr_ok || principalLen > 53) { return parser_unexpected_error; } - const uint8_t principalTextLen = (uint8_t)(principalLen + principalLen / 6); + // every 5 chars there's a separator, and last block has no separator after it + const uint8_t principalTextLen = (uint8_t)(principalLen + principalLen / 5 - (principalLen % 5 ? 0 : 1)); for (uint8_t i = 5; i < principalTextLen; i += 6) { // two blocks separated with dash, 3rd with SEPARATOR if ((i + 1) % 18 == 0) err = inplace_insert_char(text_ptr, sizeof(text), i, SEPARATOR); // line break @@ -176,8 +178,11 @@ parser_error_t page_principal_with_subaccount(const uint8_t *sender, uint16_t se return parser_unexpected_error; } } - // we are sure it's going to be up to 63 + // we are sure it's going to be up to 63 (53 + 10) principalLen = (uint16_t)strnlen(text, sizeof(text)); + if (principalLen > 63) { + return parser_unexpected_value; + } *(text_ptr + principalLen) = '-'; text_ptr += principalLen + 1; From 9e210b9497cd8eac3cb575310bdec1a0f162a3e7 Mon Sep 17 00:00:00 2001 From: Carlo Sala Date: Thu, 12 Oct 2023 16:18:15 +0200 Subject: [PATCH 3/3] bump version --- app/Makefile.version | 2 +- tests_zemu/snapshots/s-mainmenu/00004.png | Bin 432 -> 438 bytes tests_zemu/snapshots/s-mainmenu/00010.png | Bin 432 -> 438 bytes tests_zemu/snapshots/sp-mainmenu/00004.png | Bin 373 -> 370 bytes tests_zemu/snapshots/sp-mainmenu/00010.png | Bin 373 -> 370 bytes tests_zemu/snapshots/st-mainmenu/00001.png | Bin 14169 -> 14153 bytes tests_zemu/snapshots/x-mainmenu/00004.png | Bin 373 -> 370 bytes tests_zemu/snapshots/x-mainmenu/00010.png | Bin 373 -> 370 bytes 8 files changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Makefile.version b/app/Makefile.version index c7ab87c4..77eedab5 100644 --- a/app/Makefile.version +++ b/app/Makefile.version @@ -3,4 +3,4 @@ APPVERSION_M=2 # This is the minor version of this release APPVERSION_N=4 # This is the patch version of this release -APPVERSION_P=8 +APPVERSION_P=9 diff --git a/tests_zemu/snapshots/s-mainmenu/00004.png b/tests_zemu/snapshots/s-mainmenu/00004.png index 13eb5053ce4ac96aed217a0aa63401a1f9ed4344..572fb5cf0c4c0d4c709aaab58db4e1d5a5f9c851 100644 GIT binary patch delta 412 zcmV;N0b~BK1GWQ@B!7KLL_t(|ob8#*5`r)cMT3L?|G_M9Q704g=tG4Py=TR=q2NtO z+DHTd0011wzR|up*B>tR6RfjeV36fL`whO#R0qgdF3Rp3E%)a*Unm0-ZeRmBB5%CB z!*0`_%u-5aiJT0>Hqi>|uHu6vobm;fkd#qbk(*4|s;G}{On;?2)8~NEy4Np6-BP(K zp}tKfrJx}XxyE)dr+dzF0IQ=eN@|L}FgY739?d3U>9RU51^qpPMcD5DqCwDymx3Z4 zWn9~oLJ0f-cf;1ORu-y}pf-{2AdskIir}X0N))S8XtZL}3=~)>vzZnSP;(IXyA(Z5 zmR?^h>^;rpK7aI6Pt&Hd(RB9$m&JR-k!@&yhoDmnmB;E5+gaNSy1ow#BL^|JlEmfZ zWn7u5PTU_ecn)wSZl)k^#?^z}UHR8b(Y$sv^LF--&5X3nc0fftbs~ux*U9tPxy`tG zTdklfggtWGkWX8Iska6k^xIT)zwwkje?0;K00000$rS^IoY}=378Kq90000-B!72FL_t(|ob8#-5`!QNgt24a|A9T&105#aB>c2hOuOI7fq={= z28byULI@!TvTteMjOP!h`U%$A3m9a%&tAcond$%;%URidOUwP)ULL?82{#l2*&+vC z-eI?CZ!S_wWm7UTOtJB1fKk~8K{(|L$RR1CvLbg zUfRJ7Dsg|zSr@T-uzT?f)#>`eV)}AkIlAz6_V5bYp_uJ}ifV8piK%asbBl5HvRVdq z2z}-Lt>40ZwV;F2D@6C`Tl9Y(LI@#*5E6t3&eYk+b`OlLEC2ui07*qoM6N<$f@NgA A5C8xG diff --git a/tests_zemu/snapshots/s-mainmenu/00010.png b/tests_zemu/snapshots/s-mainmenu/00010.png index 13eb5053ce4ac96aed217a0aa63401a1f9ed4344..572fb5cf0c4c0d4c709aaab58db4e1d5a5f9c851 100644 GIT binary patch delta 412 zcmV;N0b~BK1GWQ@B!7KLL_t(|ob8#*5`r)cMT3L?|G_M9Q704g=tG4Py=TR=q2NtO z+DHTd0011wzR|up*B>tR6RfjeV36fL`whO#R0qgdF3Rp3E%)a*Unm0-ZeRmBB5%CB z!*0`_%u-5aiJT0>Hqi>|uHu6vobm;fkd#qbk(*4|s;G}{On;?2)8~NEy4Np6-BP(K zp}tKfrJx}XxyE)dr+dzF0IQ=eN@|L}FgY739?d3U>9RU51^qpPMcD5DqCwDymx3Z4 zWn9~oLJ0f-cf;1ORu-y}pf-{2AdskIir}X0N))S8XtZL}3=~)>vzZnSP;(IXyA(Z5 zmR?^h>^;rpK7aI6Pt&Hd(RB9$m&JR-k!@&yhoDmnmB;E5+gaNSy1ow#BL^|JlEmfZ zWn7u5PTU_ecn)wSZl)k^#?^z}UHR8b(Y$sv^LF--&5X3nc0fftbs~ux*U9tPxy`tG zTdklfggtWGkWX8Iska6k^xIT)zwwkje?0;K00000$rS^IoY}=378Kq90000-B!72FL_t(|ob8#-5`!QNgt24a|A9T&105#aB>c2hOuOI7fq={= z28byULI@!TvTteMjOP!h`U%$A3m9a%&tAcond$%;%URidOUwP)ULL?82{#l2*&+vC z-eI?CZ!S_wWm7UTOtJB1fKk~8K{(|L$RR1CvLbg zUfRJ7Dsg|zSr@T-uzT?f)#>`eV)}AkIlAz6_V5bYp_uJ}ifV8piK%asbBl5HvRVdq z2z}-Lt>40ZwV;F2D@6C`Tl9Y(LI@#*5E6t3&eYk+b`OlLEC2ui07*qoM6N<$f@NgA A5C8xG diff --git a/tests_zemu/snapshots/sp-mainmenu/00004.png b/tests_zemu/snapshots/sp-mainmenu/00004.png index a8d94f4708e14c0cfc9f050c0836e741ef0d3960..c8b61779d42e29d27e1adb1c72da1eb58d9176fa 100644 GIT binary patch delta 343 zcmey$^oePLO1-70i(^Q|oVPdc@*Ps(X-iDnBmD0Fq$+(m0nfK?<{y{4-hZBP^T34l zJkP?o7!cq`ppuf(?Z@KvS)$ipFzyLnYg)zOe>$4Mc6#(CrJ(HG=f4{>141OLm}}k2 z&jf7n{=)F>t48UjryI3=^NoM8US56mf$`#bg7x+6TQpauFBLAo=@V`I+Ff?@(|bq7 z4?J{F^O|aW-&u0{g3p0{*XF-Hx#j6bR*uS^*Dq%<@4WqX>H0n)`Pkkff%irH7qz9@ ze164m7B+oZFKOCwL`$Tz*5cBtkH5|@-Zk^`U*^ZZ?EU%{Px&h@{qWLXVKc+IKE2_B z`NkjH((iup{uD61@L0(OOY!+>GnslWuyMD7E0)Syg0rO>nm%rvOENKOadb;|#taD0e0st}2p9TN` delta 346 zcmeyw^p$CXO1+Jzi(^Q|oVPa<`I-!P+8!RQn0)uY$KGyxvFVW!jv}{S{r;o0W9HLr zNsXlp2+$y}s-(2Z=HG|an|4&|KbW1h_MUe|^c|+2y>}*wPK?U7zR!Q9!Dz}teu?uv z!pb6Vp6zWYwLN8c^HbE+W&Ja2n`d3kDmb^Q|HJ-zrYP^e*vuobV!5k#)tMPay_;Ll z$WxZGD#Y;fU6DfWTk=nH{zuN^iI$6Hn0|c6ygsW5%dbX0UcUKA`uwV!9p-nPOWZC` z@ceJ29XR>l(G`vAWs3fH+HF&Nuh+@Rwo6|2kGTHduxQTGoc|ji>fO;#6uo@z%BO## zf)g)pK3-+>Ni1089hZSj_GdHiz4jf-zKm%vw?|a>ANR48-$4Mc6#(CrJ(HG=f4{>141OLm}}k2 z&jf7n{=)F>t48UjryI3=^NoM8US56mf$`#bg7x+6TQpauFBLAo=@V`I+Ff?@(|bq7 z4?J{F^O|aW-&u0{g3p0{*XF-Hx#j6bR*uS^*Dq%<@4WqX>H0n)`Pkkff%irH7qz9@ ze164m7B+oZFKOCwL`$Tz*5cBtkH5|@-Zk^`U*^ZZ?EU%{Px&h@{qWLXVKc+IKE2_B z`NkjH((iup{uD61@L0(OOY!+>GnslWuyMD7E0)Syg0rO>nm%rvOENKOadb;|#taD0e0st}2p9TN` delta 346 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๿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 Y_D8OkU*Q6d$g!9jTU;x@;`aD|0qCrgRR910 literal 14169 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 delta 346 zcmeyw^p$CXO1+Jzi(^Q|oVPa<`I-!P+8!RQn0)uY$KGyxvFVW!jv}{S{r;o0W9HLr zNsXlp2+$y}s-(2Z=HG|an|4&|KbW1h_MUe|^c|+2y>}*wPK?U7zR!Q9!Dz}teu?uv z!pb6Vp6zWYwLN8c^HbE+W&Ja2n`d3kDmb^Q|HJ-zrYP^e*vuobV!5k#)tMPay_;Ll z$WxZGD#Y;fU6DfWTk=nH{zuN^iI$6Hn0|c6ygsW5%dbX0UcUKA`uwV!9p-nPOWZC` z@ceJ29XR>l(G`vAWs3fH+HF&Nuh+@Rwo6|2kGTHduxQTGoc|ji>fO;#6uo@z%BO## zf)g)pK3-+>Ni1089hZSj_GdHiz4jf-zKm%vw?|a>ANR48-$4Mc6#(CrJ(HG=f4{>141OLm}}k2 z&jf7n{=)F>t48UjryI3=^NoM8US56mf$`#bg7x+6TQpauFBLAo=@V`I+Ff?@(|bq7 z4?J{F^O|aW-&u0{g3p0{*XF-Hx#j6bR*uS^*Dq%<@4WqX>H0n)`Pkkff%irH7qz9@ ze164m7B+oZFKOCwL`$Tz*5cBtkH5|@-Zk^`U*^ZZ?EU%{Px&h@{qWLXVKc+IKE2_B z`NkjH((iup{uD61@L0(OOY!+>GnslWuyMD7E0)Syg0rO>nm%rvOENKOadb;|#taD0e0st}2p9TN` delta 346 zcmeyw^p$CXO1+Jzi(^Q|oVPa<`I-!P+8!RQn0)uY$KGyxvFVW!jv}{S{r;o0W9HLr zNsXlp2+$y}s-(2Z=HG|an|4&|KbW1h_MUe|^c|+2y>}*wPK?U7zR!Q9!Dz}teu?uv z!pb6Vp6zWYwLN8c^HbE+W&Ja2n`d3kDmb^Q|HJ-zrYP^e*vuobV!5k#)tMPay_;Ll z$WxZGD#Y;fU6DfWTk=nH{zuN^iI$6Hn0|c6ygsW5%dbX0UcUKA`uwV!9p-nPOWZC` z@ceJ29XR>l(G`vAWs3fH+HF&Nuh+@Rwo6|2kGTHduxQTGoc|ji>fO;#6uo@z%BO## zf)g)pK3-+>Ni1089hZSj_GdHiz4jf-zKm%vw?|a>ANR48-