22
22
#define DERIV_ACCOUNT 0
23
23
#define DERIV_CHANGE 0
24
24
25
- #define MAX_ADDR_LEN 42 + 1 // 42 = max length of address + null terminator
25
+ #define MAX_TEXT_LEN 30 // 30 = max length of text
26
+ #define MAX_TEXT_BUF (MAX_TEXT_LEN + 1) // max length of text + null terminator
27
+ #define MAX_ADDR_BUF (42 + 1) // 42 = max length of address + null terminator
26
28
#define NUM_ADDRS 6
27
29
28
30
#define PAGE_LOADING 0
@@ -116,13 +118,15 @@ static void flipbip_scene_1_init_address(
116
118
uint32_t addr_index ) {
117
119
//s_busy = true;
118
120
119
- // Buffer for address serialization
120
- const size_t buflen = 40 ;
121
- char buf [40 + 1 ] = {0 };
121
+ // buffer for address serialization
122
+ // subtract 2 for "0x", 1 for null terminator
123
+ const size_t buflen = MAX_ADDR_BUF - (2 + 1 );
124
+ // subtract 2 for "0x"
125
+ char buf [MAX_ADDR_BUF - 2 ] = {0 };
122
126
123
127
// Use static node for address generation
124
128
memcpy (s_addr_node , node , sizeof (HDNode ));
125
- memzero (addr_text , MAX_ADDR_LEN );
129
+ memzero (addr_text , MAX_ADDR_BUF );
126
130
127
131
hdnode_private_ckd (s_addr_node , addr_index );
128
132
hdnode_fill_public_key (s_addr_node );
@@ -161,8 +165,8 @@ static void
161
165
flipbip_scene_1_draw_generic (const char * text , const size_t line_len , const bool chunk ) {
162
166
// Split the text into parts
163
167
size_t len = line_len ;
164
- if (len > 30 ) {
165
- len = 30 ;
168
+ if (len > MAX_TEXT_LEN ) {
169
+ len = MAX_TEXT_LEN ;
166
170
}
167
171
for (size_t si = 1 ; si <= 6 ; si ++ ) {
168
172
char * ptr = NULL ;
@@ -180,7 +184,7 @@ static void
180
184
else if (si == 6 )
181
185
ptr = s_disp_text6 ;
182
186
183
- memzero (ptr , 30 + 1 );
187
+ memzero (ptr , MAX_TEXT_BUF );
184
188
strncpy (ptr , text + ((si - 1 ) * len ), len );
185
189
// add a space every 4 characters and shift the text
186
190
if (len < 23 && chunk ) {
@@ -231,9 +235,9 @@ static void flipbip_scene_1_draw_mnemonic(const char* mnemonic) {
231
235
else if (mi == 6 )
232
236
ptr = s_disp_text6 ;
233
237
234
- memzero (ptr , 30 + 1 );
235
- if (strlen (mnemonic_part ) > 30 ) {
236
- strncpy (ptr , mnemonic_part , 30 );
238
+ memzero (ptr , MAX_TEXT_BUF );
239
+ if (strlen (mnemonic_part ) > MAX_TEXT_LEN ) {
240
+ strncpy (ptr , mnemonic_part , MAX_TEXT_LEN );
237
241
} else {
238
242
strncpy (ptr , mnemonic_part , strlen (mnemonic_part ));
239
243
}
@@ -260,12 +264,12 @@ static void flipbip_scene_1_draw_seed(FlipBipScene1Model* const model) {
260
264
}
261
265
262
266
static void flipbip_scene_1_clear_text () {
263
- memzero ((void * )s_disp_text1 , 30 + 1 );
264
- memzero ((void * )s_disp_text2 , 30 + 1 );
265
- memzero ((void * )s_disp_text3 , 30 + 1 );
266
- memzero ((void * )s_disp_text4 , 30 + 1 );
267
- memzero ((void * )s_disp_text5 , 30 + 1 );
268
- memzero ((void * )s_disp_text6 , 30 + 1 );
267
+ memzero ((void * )s_disp_text1 , MAX_TEXT_BUF );
268
+ memzero ((void * )s_disp_text2 , MAX_TEXT_BUF );
269
+ memzero ((void * )s_disp_text3 , MAX_TEXT_BUF );
270
+ memzero ((void * )s_disp_text4 , MAX_TEXT_BUF );
271
+ memzero ((void * )s_disp_text5 , MAX_TEXT_BUF );
272
+ memzero ((void * )s_disp_text6 , MAX_TEXT_BUF );
269
273
}
270
274
271
275
void flipbip_scene_1_draw (Canvas * canvas , FlipBipScene1Model * model ) {
@@ -472,8 +476,8 @@ static int flipbip_scene_1_model_init(
472
476
473
477
// Initialize addresses
474
478
for (uint8_t a = 0 ; a < NUM_ADDRS ; a ++ ) {
475
- model -> recv_addresses [a ] = malloc (MAX_ADDR_LEN );
476
- memzero (model -> recv_addresses [a ], MAX_ADDR_LEN );
479
+ model -> recv_addresses [a ] = malloc (MAX_ADDR_BUF );
480
+ memzero (model -> recv_addresses [a ], MAX_ADDR_BUF );
477
481
flipbip_scene_1_init_address (model -> recv_addresses [a ], node , coin , a );
478
482
479
483
// Save QR code file
@@ -597,7 +601,7 @@ void flipbip_scene_1_exit(void* context) {
597
601
free ((void * )model -> xprv_extended );
598
602
free ((void * )model -> xpub_extended );
599
603
for (int a = 0 ; a < NUM_ADDRS ; a ++ ) {
600
- memzero ((void * )model -> recv_addresses [a ], MAX_ADDR_LEN );
604
+ memzero ((void * )model -> recv_addresses [a ], MAX_ADDR_BUF );
601
605
free ((void * )model -> recv_addresses [a ]);
602
606
}
603
607
}
@@ -696,12 +700,12 @@ FlipBipScene1* flipbip_scene_1_alloc() {
696
700
s_addr_node = (HDNode * )malloc (sizeof (HDNode ));
697
701
698
702
// allocate the display text
699
- s_disp_text1 = (char * )malloc (30 + 1 );
700
- s_disp_text2 = (char * )malloc (30 + 1 );
701
- s_disp_text3 = (char * )malloc (30 + 1 );
702
- s_disp_text4 = (char * )malloc (30 + 1 );
703
- s_disp_text5 = (char * )malloc (30 + 1 );
704
- s_disp_text6 = (char * )malloc (30 + 1 );
703
+ s_disp_text1 = (char * )malloc (MAX_TEXT_BUF );
704
+ s_disp_text2 = (char * )malloc (MAX_TEXT_BUF );
705
+ s_disp_text3 = (char * )malloc (MAX_TEXT_BUF );
706
+ s_disp_text4 = (char * )malloc (MAX_TEXT_BUF );
707
+ s_disp_text5 = (char * )malloc (MAX_TEXT_BUF );
708
+ s_disp_text6 = (char * )malloc (MAX_TEXT_BUF );
705
709
706
710
return instance ;
707
711
}
0 commit comments