Reject out-of-range observation epochs before display

This commit is contained in:
Sameh Khamis committed 2026-09-13 09:14:06 -07:00
1 parent 0007ace064
commit ebebf69564
3 files changed
+18 -2

No files matched your search

+2 -1
View File
@@ -141,7 +141,8 @@ export function normalizeAircraftTrack(
const latitude = finite(row[1]),
longitude = finite(row[2]);
const offset = finite(row[0]);
const observedAtMs = offset == null ? null : baseTimeMs + offset * 1000;
const observedAtMs =
offset == null ? null : epoch(baseTimeMs + offset * 1000);
if (
!coordinates(latitude, longitude) ||
observedAtMs == null ||
+6 -1
View File
@@ -32,7 +32,12 @@ export function finite(value) {
export function epoch(value, scale = 1) {
const number = finite(value);
return number != null && number > 0 ? number * scale : null;
const milliseconds = number == null ? null : number * scale;
return milliseconds != null &&
milliseconds > 0 &&
milliseconds <= 8640000000000000
? milliseconds
: null;
}
export function cleanText(value) {
+10
View File
@@ -261,3 +261,13 @@ test('a malformed vessel row cannot prevent admission of valid positions', async
assert.equal(snapshot.rejectedCount, 1);
assert.equal(snapshot.complete, false);
});
test('out-of-range source epochs do not reach Date or globe time constructors', () => {
const row = [...aircraft];
row[3] = 1e100;
row[4] = 1e100;
const snapshot = openSkySnapshot({ time: 1e100, states: [row] });
assert.equal(snapshot.observedAtMs, null);
assert.equal(snapshot.records[0].positionTimeMs, null);
assert.equal(snapshot.records[0].contactTimeMs, null);
});