Use snprintf instead of u32_to_str

This commit is contained in:
pscott
2021-04-28 10:48:18 +02:00
parent d5b32af95e
commit ebffb48cd3
3 changed files with 7 additions and 43 deletions

View File

@@ -72,45 +72,6 @@ uint32_t u32_from_BE(uint8_t *in, uint8_t size, bool strict) {
return res;
}
// Converts a uint32_t to a string.
void u32_to_str(char *dest, uint32_t in, uint8_t dest_size) {
uint8_t i = 0;
// Get the first digit (in case it's 0).
dest[i] = in % 10 + '0';
in /= 10;
i++;
// Get every digit.
while (in != 0) {
if (i >= dest_size) {
THROW(6502);
}
dest[i] = in % 10 + '0';
in /= 10;
i++;
}
// Null terminate the string.
dest[i] = '\0';
i--;
// Reverse the string
uint8_t end = i;
char tmp;
i = 0;
while (i < end) {
// Swap the first and last elements.
tmp = dest[i];
dest[i] = dest[end];
dest[end] = tmp;
// Decrease the interval size.
i++;
end--;
}
}
void amountToString(uint8_t *amount,
uint8_t amount_size,
uint8_t decimals,

View File

@@ -28,9 +28,6 @@ void convertUint256BE(uint8_t* data, uint32_t length, uint256_t* target);
int local_strchr(char* string, char ch);
// `itoa` for uint32_t.
void u32_to_str(char* dest, uint8_t dest_size, uint32_t in);
// Converts a list of bytes (in BE) of length `size` to a uint32_t. `strict` will make the function
// throw if the size is > 4.
uint32_t u32_from_BE(uint8_t* in, uint8_t size, bool strict);

View File

@@ -389,7 +389,13 @@ void finalizeParsing(bool direct) {
if (genericUI) {
if (txContext.txType == LEGACY) {
uint32_t id = u32_from_BE(txContext.content->v, txContext.content->vLength, true);
u32_to_str((char *) strings.common.chainID, sizeof(strings.common.chainID), id);
uint8_t res =
snprintf(strings.common.chainID, sizeof(strings.common.chainID), "%u", id);
if (res >= sizeof(strings.common.chainID)) {
// If the return value is higher or equal to the size passed in as parameter, then
// the output was truncated. Return the appropriate error code.
THROW(0x6502);
}
} else if (txContext.txType == EIP2930) {
uint256_t chainID;
convertUint256BE(tmpContent.txContent.chainID.value,