diff --git a/src/handle_swap_sign_transaction.c b/src/handle_swap_sign_transaction.c index 67bdff1..e4c7111 100644 --- a/src/handle_swap_sign_transaction.c +++ b/src/handle_swap_sign_transaction.c @@ -10,7 +10,7 @@ bool copy_transaction_parameters(create_transaction_parameters_t* sign_transacti // We need this "trick" as the input data position can overlap with app-ethereum globals txStringProperties_t stack_data; memset(&stack_data, 0, sizeof(stack_data)); - strncpy(stack_data.fullAddress, + strlcpy(stack_data.fullAddress, sign_transaction_params->destination_address, sizeof(stack_data.fullAddress)); if ((stack_data.fullAddress[sizeof(stack_data.fullAddress) - 1] != '\0') || diff --git a/src/utils.c b/src/utils.c index e662209..85f2add 100644 --- a/src/utils.c +++ b/src/utils.c @@ -93,7 +93,7 @@ bool uint256_to_decimal(const uint8_t *value, size_t value_len, char *out, size_ // Not enough space to hold "0" and \0. return false; } - strncpy(out, "0", out_len); + strlcpy(out, "0", out_len); return true; } diff --git a/src_features/signTx/logic_signTx.c b/src_features/signTx/logic_signTx.c index 336679f..8020859 100644 --- a/src_features/signTx/logic_signTx.c +++ b/src_features/signTx/logic_signTx.c @@ -416,7 +416,7 @@ void finalizeParsing(bool direct) { tmpContent.txContent.nonce.length, &nonce); tostring256(&nonce, 10, displayBuffer, sizeof(displayBuffer)); - strncpy(strings.common.nonce, displayBuffer, sizeof(strings.common.nonce)); + strlcpy(strings.common.nonce, displayBuffer, sizeof(strings.common.nonce)); } // Compute maximum fee if (genericUI) { @@ -444,7 +444,7 @@ void finalizeParsing(bool direct) { } } else { // Network name found, simply copy it. - strncpy(strings.common.network_name, name, sizeof(strings.common.network_name)); + strlcpy(strings.common.network_name, name, sizeof(strings.common.network_name)); } } diff --git a/src_plugins/erc20/erc20_plugin.c b/src_plugins/erc20/erc20_plugin.c index 292bba0..156ca07 100644 --- a/src_plugins/erc20/erc20_plugin.c +++ b/src_plugins/erc20/erc20_plugin.c @@ -66,7 +66,7 @@ bool check_contract(erc20_parameters_t *context) { for (size_t i = 0; i < NUM_CONTRACTS; i++) { contract_t *contract = (contract_t *) PIC(&CONTRACTS[i]); if (memcmp(contract->address, context->destinationAddress, ADDRESS_LENGTH) == 0) { - strncpy(context->contract_name, contract->name, sizeof(context->contract_name)); + strlcpy(context->contract_name, contract->name, sizeof(context->contract_name)); return true; } }