fix(export): harden edited-track filter validation

This commit is contained in:
wiiiii123
2026-04-21 18:09:23 +07:00
parent 2b19493bb7
commit 3b2922cfbb
2 changed files with 16 additions and 2 deletions
+9
View File
@@ -54,5 +54,14 @@ describe("buildEditedTrackSourceAudioFilter", () => {
expect(
buildEditedTrackSourceAudioFilter([{ startMs: 0, endMs: 2_000, speed: 1 }], 0.4),
).toBeNull();
expect(
buildEditedTrackSourceAudioFilter([{ startMs: -100, endMs: 2_000, speed: 1 }], 44_100),
).toBeNull();
expect(
buildEditedTrackSourceAudioFilter(
[{ startMs: 0, endMs: 2_000, speed: Number.MAX_SAFE_INTEGER }],
44_100,
),
).toBeNull();
});
});
+7 -2
View File
@@ -190,7 +190,12 @@ export function buildEditedTrackSourceAudioFilter(
let hasInvalidSegment = false;
segments.forEach((segment, index) => {
if (!Number.isFinite(segment.startMs) || !Number.isFinite(segment.endMs)) {
if (
!Number.isFinite(segment.startMs) ||
!Number.isFinite(segment.endMs) ||
segment.startMs < 0 ||
segment.endMs < 0
) {
hasInvalidSegment = true;
return;
}
@@ -214,7 +219,7 @@ export function buildEditedTrackSourceAudioFilter(
if (Math.abs(speed - 1) > 0.0001) {
const adjustedSampleRate = Math.round(normalizedSourceSampleRate * speed);
if (adjustedSampleRate < 1) {
if (!Number.isSafeInteger(adjustedSampleRate) || adjustedSampleRate < 1) {
hasInvalidSegment = true;
return;
}