Skip to content

Commit 9ae6db8

Browse files
committed
Fix NaN handling in responseAdSlotCount
The function didn't validate that params.step and params.firstAdAfterNodes are finite numbers. If they were NaN or Infinity, Math.max(1, NaN) would return NaN. Added Number.isFinite() checks to default to safe values for invalid numbers.
1 parent 7b65652 commit 9ae6db8

1 file changed

Lines changed: 4 additions & 5 deletions

File tree

common/src/util/response-ad-positions.ts

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,10 @@ export function responseAdSlotCount(params: {
1818
step?: number
1919
firstAdAfterNodes?: number
2020
}): number {
21-
const step = Math.max(1, params.step ?? RESPONSE_AD_NODE_STEP)
22-
const firstAdAfterNodes = Math.max(
23-
1,
24-
params.firstAdAfterNodes ?? RESPONSE_AD_FIRST_NODE_COUNT,
25-
)
21+
const safeStep = params.step !== undefined && Number.isFinite(params.step) ? params.step : RESPONSE_AD_NODE_STEP
22+
const safeFirstAdAfterNodes = params.firstAdAfterNodes !== undefined && Number.isFinite(params.firstAdAfterNodes) ? params.firstAdAfterNodes : RESPONSE_AD_FIRST_NODE_COUNT
23+
const step = Math.max(1, safeStep)
24+
const firstAdAfterNodes = Math.max(1, safeFirstAdAfterNodes)
2625
return Math.max(
2726
0,
2827
Math.floor((params.nodeCount - firstAdAfterNodes - 1) / step) + 1,

0 commit comments

Comments
 (0)