1
0
mirror of https://github.com/trezor/trezor-wallet synced 2025-01-07 14:50:52 +00:00

throw exception when non-num string is passed to Bignumber()

This commit is contained in:
slowbackspace 2019-02-19 19:10:47 +01:00
parent 8da8544316
commit 53c7c20a29
4 changed files with 25 additions and 4 deletions

View File

@ -347,7 +347,12 @@ export const calculateFee = (gasPrice: string, gasLimit: string): string => {
export const calculateTotal = (amount: string, gasPrice: string, gasLimit: string): string => {
try {
return new BigNumber(amount).plus(calculateFee(gasPrice, gasLimit)).toFixed();
const bAmount = new BigNumber(amount);
// BigNumber() returns NaN on non-numeric string
if (bAmount.isNaN()) {
throw new Error('Amount is not a number');
}
return bAmount.plus(calculateFee(gasPrice, gasLimit)).toFixed();
} catch (error) {
return '0';
}

View File

@ -300,7 +300,12 @@ export const destinationTagValidation = ($state: State): PayloadAction<State> =>
const calculateTotal = (amount: string, fee: string): string => {
try {
return new BigNumber(amount).plus(fee).toFixed();
const bAmount = new BigNumber(amount);
// BigNumber() returns NaN on non-numeric string
if (bAmount.isNaN()) {
throw new Error('Amount is not a number');
}
return bAmount.plus(fee).toFixed();
} catch (error) {
return '0';
}

View File

@ -37,6 +37,7 @@ declare module 'bignumber.js' {
isLessThan(n: $npm$big$number$object): boolean;
lte(n: $npm$big$number$object): boolean;
isLessThanOrEqualTo(n: $npm$big$number$object): boolean;
isNaN(): boolean;
minus(n: $npm$big$number$object): T_BigNumber;
mod(n: $npm$big$number$object): T_BigNumber;
plus(n: $npm$big$number$object): T_BigNumber;

View File

@ -56,7 +56,12 @@ export const hexToString = (hex: string): string => {
export const toDecimalAmount = (amount: string | number, decimals: number): string => {
try {
return new BigNumber(amount).div(10 ** decimals).toString(10);
const bAmount = new BigNumber(amount);
// BigNumber() returns NaN on non-numeric string
if (bAmount.isNaN()) {
throw new Error('Amount is not a number');
}
return bAmount.div(10 ** decimals).toString(10);
} catch (error) {
return '0';
}
@ -64,7 +69,12 @@ export const toDecimalAmount = (amount: string | number, decimals: number): stri
export const fromDecimalAmount = (amount: string | number, decimals: number): string => {
try {
return new BigNumber(amount).times(10 ** decimals).toString(10);
const bAmount = new BigNumber(amount);
// BigNumber() returns NaN on non-numeric string
if (bAmount.isNaN()) {
throw new Error('Amount is not a number');
}
return bAmount.times(10 ** decimals).toString(10);
} catch (error) {
return '0';
}