|
|
@@ -22,7 +22,9 @@
|
|
|
#define DERIV_ACCOUNT 0
|
|
|
#define DERIV_CHANGE 0
|
|
|
|
|
|
-#define MAX_ADDR_LEN 42 + 1 // 42 = max length of address + null terminator
|
|
|
+#define MAX_TEXT_LEN 30 // 30 = max length of text
|
|
|
+#define MAX_TEXT_BUF (MAX_TEXT_LEN + 1) // max length of text + null terminator
|
|
|
+#define MAX_ADDR_BUF (42 + 1) // 42 = max length of address + null terminator
|
|
|
#define NUM_ADDRS 6
|
|
|
|
|
|
#define PAGE_LOADING 0
|
|
|
@@ -116,13 +118,15 @@ static void flipbip_scene_1_init_address(
|
|
|
uint32_t addr_index) {
|
|
|
//s_busy = true;
|
|
|
|
|
|
- // Buffer for address serialization
|
|
|
- const size_t buflen = 40;
|
|
|
- char buf[40 + 1] = {0};
|
|
|
+ // buffer for address serialization
|
|
|
+ // subtract 2 for "0x", 1 for null terminator
|
|
|
+ const size_t buflen = MAX_ADDR_BUF - (2 + 1);
|
|
|
+ // subtract 2 for "0x"
|
|
|
+ char buf[MAX_ADDR_BUF - 2] = {0};
|
|
|
|
|
|
// Use static node for address generation
|
|
|
memcpy(s_addr_node, node, sizeof(HDNode));
|
|
|
- memzero(addr_text, MAX_ADDR_LEN);
|
|
|
+ memzero(addr_text, MAX_ADDR_BUF);
|
|
|
|
|
|
hdnode_private_ckd(s_addr_node, addr_index);
|
|
|
hdnode_fill_public_key(s_addr_node);
|
|
|
@@ -161,8 +165,8 @@ static void
|
|
|
flipbip_scene_1_draw_generic(const char* text, const size_t line_len, const bool chunk) {
|
|
|
// Split the text into parts
|
|
|
size_t len = line_len;
|
|
|
- if(len > 30) {
|
|
|
- len = 30;
|
|
|
+ if(len > MAX_TEXT_LEN) {
|
|
|
+ len = MAX_TEXT_LEN;
|
|
|
}
|
|
|
for(size_t si = 1; si <= 6; si++) {
|
|
|
char* ptr = NULL;
|
|
|
@@ -180,7 +184,7 @@ static void
|
|
|
else if(si == 6)
|
|
|
ptr = s_disp_text6;
|
|
|
|
|
|
- memzero(ptr, 30 + 1);
|
|
|
+ memzero(ptr, MAX_TEXT_BUF);
|
|
|
strncpy(ptr, text + ((si - 1) * len), len);
|
|
|
// add a space every 4 characters and shift the text
|
|
|
if(len < 23 && chunk) {
|
|
|
@@ -231,9 +235,9 @@ static void flipbip_scene_1_draw_mnemonic(const char* mnemonic) {
|
|
|
else if(mi == 6)
|
|
|
ptr = s_disp_text6;
|
|
|
|
|
|
- memzero(ptr, 30 + 1);
|
|
|
- if(strlen(mnemonic_part) > 30) {
|
|
|
- strncpy(ptr, mnemonic_part, 30);
|
|
|
+ memzero(ptr, MAX_TEXT_BUF);
|
|
|
+ if(strlen(mnemonic_part) > MAX_TEXT_LEN) {
|
|
|
+ strncpy(ptr, mnemonic_part, MAX_TEXT_LEN);
|
|
|
} else {
|
|
|
strncpy(ptr, mnemonic_part, strlen(mnemonic_part));
|
|
|
}
|
|
|
@@ -260,12 +264,12 @@ static void flipbip_scene_1_draw_seed(FlipBipScene1Model* const model) {
|
|
|
}
|
|
|
|
|
|
static void flipbip_scene_1_clear_text() {
|
|
|
- memzero((void*)s_disp_text1, 30 + 1);
|
|
|
- memzero((void*)s_disp_text2, 30 + 1);
|
|
|
- memzero((void*)s_disp_text3, 30 + 1);
|
|
|
- memzero((void*)s_disp_text4, 30 + 1);
|
|
|
- memzero((void*)s_disp_text5, 30 + 1);
|
|
|
- memzero((void*)s_disp_text6, 30 + 1);
|
|
|
+ memzero((void*)s_disp_text1, MAX_TEXT_BUF);
|
|
|
+ memzero((void*)s_disp_text2, MAX_TEXT_BUF);
|
|
|
+ memzero((void*)s_disp_text3, MAX_TEXT_BUF);
|
|
|
+ memzero((void*)s_disp_text4, MAX_TEXT_BUF);
|
|
|
+ memzero((void*)s_disp_text5, MAX_TEXT_BUF);
|
|
|
+ memzero((void*)s_disp_text6, MAX_TEXT_BUF);
|
|
|
}
|
|
|
|
|
|
void flipbip_scene_1_draw(Canvas* canvas, FlipBipScene1Model* model) {
|
|
|
@@ -472,8 +476,8 @@ static int flipbip_scene_1_model_init(
|
|
|
|
|
|
// Initialize addresses
|
|
|
for(uint8_t a = 0; a < NUM_ADDRS; a++) {
|
|
|
- model->recv_addresses[a] = malloc(MAX_ADDR_LEN);
|
|
|
- memzero(model->recv_addresses[a], MAX_ADDR_LEN);
|
|
|
+ model->recv_addresses[a] = malloc(MAX_ADDR_BUF);
|
|
|
+ memzero(model->recv_addresses[a], MAX_ADDR_BUF);
|
|
|
flipbip_scene_1_init_address(model->recv_addresses[a], node, coin, a);
|
|
|
|
|
|
// Save QR code file
|
|
|
@@ -597,7 +601,7 @@ void flipbip_scene_1_exit(void* context) {
|
|
|
free((void*)model->xprv_extended);
|
|
|
free((void*)model->xpub_extended);
|
|
|
for(int a = 0; a < NUM_ADDRS; a++) {
|
|
|
- memzero((void*)model->recv_addresses[a], MAX_ADDR_LEN);
|
|
|
+ memzero((void*)model->recv_addresses[a], MAX_ADDR_BUF);
|
|
|
free((void*)model->recv_addresses[a]);
|
|
|
}
|
|
|
}
|
|
|
@@ -696,12 +700,12 @@ FlipBipScene1* flipbip_scene_1_alloc() {
|
|
|
s_addr_node = (HDNode*)malloc(sizeof(HDNode));
|
|
|
|
|
|
// allocate the display text
|
|
|
- s_disp_text1 = (char*)malloc(30 + 1);
|
|
|
- s_disp_text2 = (char*)malloc(30 + 1);
|
|
|
- s_disp_text3 = (char*)malloc(30 + 1);
|
|
|
- s_disp_text4 = (char*)malloc(30 + 1);
|
|
|
- s_disp_text5 = (char*)malloc(30 + 1);
|
|
|
- s_disp_text6 = (char*)malloc(30 + 1);
|
|
|
+ s_disp_text1 = (char*)malloc(MAX_TEXT_BUF);
|
|
|
+ s_disp_text2 = (char*)malloc(MAX_TEXT_BUF);
|
|
|
+ s_disp_text3 = (char*)malloc(MAX_TEXT_BUF);
|
|
|
+ s_disp_text4 = (char*)malloc(MAX_TEXT_BUF);
|
|
|
+ s_disp_text5 = (char*)malloc(MAX_TEXT_BUF);
|
|
|
+ s_disp_text6 = (char*)malloc(MAX_TEXT_BUF);
|
|
|
|
|
|
return instance;
|
|
|
}
|