Skip to content

Commit 4aed155

Browse files
committed
Fix NaN handling in currency conversion input validation
The functions didn't validate that credits and amountInCents are finite numbers. If they were NaN or Infinity, Math.ceil(NaN * centsPerCredit) would return NaN. Added Number.isFinite() checks to return 0 for invalid inputs.
1 parent 7b65652 commit 4aed155

1 file changed

Lines changed: 4 additions & 0 deletions

File tree

‎common/src/util/currency.ts‎

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ export function convertCreditsToUsdCents(
88
credits: number,
99
centsPerCredit: number,
1010
): number {
11+
if (centsPerCredit <= 0) return 0
12+
if (!Number.isFinite(credits)) return 0
1113
return Math.ceil(credits * centsPerCredit)
1214
}
1315

@@ -21,5 +23,7 @@ export function convertStripeGrantAmountToCredits(
2123
amountInCents: number,
2224
centsPerCredit: number,
2325
): number {
26+
if (centsPerCredit <= 0) return 0
27+
if (!Number.isFinite(amountInCents)) return 0
2428
return Math.floor(amountInCents / centsPerCredit)
2529
}

0 commit comments

Comments
 (0)