Skip to content

Commit c24c8cc

Browse files
committed
fix(cli): add upper bound check for modelFacingUserTurnCount
Reject values exceeding Number.MAX_SAFE_INTEGER in both validateModelFacingUserTurnCount (Session.ts) and the isHistorySnapshot guard (acpAgent.ts). This prevents malformed clients from poisoning session state with absurdly large turn counts.
1 parent 66ce9c3 commit c24c8cc

2 files changed

Lines changed: 9 additions & 1 deletion

File tree

packages/cli/src/acp-integration/acpAgent.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1559,7 +1559,9 @@ class QwenAgent implements Agent {
15591559
.modelFacingUserTurnCount as number,
15601560
) &&
15611561
((history as { modelFacingUserTurnCount?: unknown })
1562-
.modelFacingUserTurnCount as number) >= 0;
1562+
.modelFacingUserTurnCount as number) >= 0 &&
1563+
((history as { modelFacingUserTurnCount?: unknown })
1564+
.modelFacingUserTurnCount as number) <= Number.MAX_SAFE_INTEGER;
15631565
if (!Array.isArray(history) && !isHistorySnapshot) {
15641566
throw RequestError.invalidParams(
15651567
undefined,

packages/cli/src/acp-integration/session/Session.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -152,6 +152,12 @@ function validateModelFacingUserTurnCount(count: unknown): number {
152152
`modelFacingUserTurnCount must be a non-negative finite integer, got ${count}`,
153153
);
154154
}
155+
if (count > Number.MAX_SAFE_INTEGER) {
156+
throw RequestError.invalidParams(
157+
undefined,
158+
`modelFacingUserTurnCount exceeds maximum safe integer, got ${count}`,
159+
);
160+
}
155161
return count;
156162
}
157163

0 commit comments

Comments
 (0)