From 9ae6db8952bcaa19950a1efc1584dd6eaaf4c066 Mon Sep 17 00:00:00 2001 From: Pavan Kumar VH Date: Thu, 3 Sep 2026 17:51:04 +0530 Subject: [PATCH] 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. --- common/src/util/response-ad-positions.ts | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/common/src/util/response-ad-positions.ts b/common/src/util/response-ad-positions.ts index bdaf6db288..58b2343608 100644 --- a/common/src/util/response-ad-positions.ts +++ b/common/src/util/response-ad-positions.ts @@ -18,11 +18,10 @@ export function responseAdSlotCount(params: { step?: number firstAdAfterNodes?: number }): number { - const step = Math.max(1, params.step ?? RESPONSE_AD_NODE_STEP) - const firstAdAfterNodes = Math.max( - 1, - params.firstAdAfterNodes ?? RESPONSE_AD_FIRST_NODE_COUNT, - ) + const safeStep = params.step !== undefined && Number.isFinite(params.step) ? params.step : RESPONSE_AD_NODE_STEP + const safeFirstAdAfterNodes = params.firstAdAfterNodes !== undefined && Number.isFinite(params.firstAdAfterNodes) ? params.firstAdAfterNodes : RESPONSE_AD_FIRST_NODE_COUNT + const step = Math.max(1, safeStep) + const firstAdAfterNodes = Math.max(1, safeFirstAdAfterNodes) return Math.max( 0, Math.floor((params.nodeCount - firstAdAfterNodes - 1) / step) + 1,