fix(jsonl): reject negative-zero timestamps
This commit is contained in:
@@ -86,6 +86,7 @@ function isHeaderLine(value: unknown): value is HeaderLine {
|
|||||||
&& typeof (value as { createdAt?: unknown }).createdAt === 'number'
|
&& typeof (value as { createdAt?: unknown }).createdAt === 'number'
|
||||||
&& Number.isSafeInteger((value as { createdAt: number }).createdAt)
|
&& Number.isSafeInteger((value as { createdAt: number }).createdAt)
|
||||||
&& (value as { createdAt: number }).createdAt >= 0
|
&& (value as { createdAt: number }).createdAt >= 0
|
||||||
|
&& !Object.is((value as { createdAt: number }).createdAt, -0)
|
||||||
&& typeof (value as { delegationDepth?: unknown }).delegationDepth === 'number'
|
&& typeof (value as { delegationDepth?: unknown }).delegationDepth === 'number'
|
||||||
&& Number.isSafeInteger((value as { delegationDepth: number }).delegationDepth)
|
&& Number.isSafeInteger((value as { delegationDepth: number }).delegationDepth)
|
||||||
&& (value as { delegationDepth: number }).delegationDepth >= 0
|
&& (value as { delegationDepth: number }).delegationDepth >= 0
|
||||||
|
|||||||
@@ -574,6 +574,11 @@ describe('SessionPersistenceJsonl: scanLog unit', () => {
|
|||||||
expect(() => scanLog(Buffer.from(log))).toThrow(/session header/)
|
expect(() => scanLog(Buffer.from(log))).toThrow(/session header/)
|
||||||
})
|
})
|
||||||
|
|
||||||
|
it('rejects a session header with negative-zero createdAt', () => {
|
||||||
|
const log = '{"type":"session","version":0,"id":"invalid-created-at","createdAt":-0,"delegationDepth":0}\n'
|
||||||
|
expect(() => scanLog(Buffer.from(log))).toThrow(/session header/)
|
||||||
|
})
|
||||||
|
|
||||||
it.each([
|
it.each([
|
||||||
['missing', undefined],
|
['missing', undefined],
|
||||||
['a string', '1'],
|
['a string', '1'],
|
||||||
|
|||||||
Reference in New Issue
Block a user