From 215d67ce89d750152030c1f145c5aa0b3c1b1ec8 Mon Sep 17 00:00:00 2001 From: Julian Lechner Date: Mon, 22 Jun 2026 12:20:41 +0200 Subject: [PATCH] Reject non-finite volume values --- src/audio-manager.ts | 2 +- tests/audio-manager.test.ts | 5 +++++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/audio-manager.ts b/src/audio-manager.ts index 756f397..23b5e9b 100644 --- a/src/audio-manager.ts +++ b/src/audio-manager.ts @@ -182,7 +182,7 @@ export default class AudioManager { throw new AudioManagerStateError('Volume control requires volume.enabled to be true.'); } - if (volumeInPercent < 0 || volumeInPercent > 100) { + if (!Number.isFinite(volumeInPercent) || volumeInPercent < 0 || volumeInPercent > 100) { throw new AudioManagerConfigError('Volume must be between 0 and 100 percent.'); } diff --git a/tests/audio-manager.test.ts b/tests/audio-manager.test.ts index 36f12e1..9f5badc 100644 --- a/tests/audio-manager.test.ts +++ b/tests/audio-manager.test.ts @@ -273,6 +273,11 @@ describe('AudioManager', () => { expect(() => manager.setVolume(-1)).toThrow(AudioManagerConfigError); expect(() => manager.setVolume(101)).toThrow(AudioManagerConfigError); + expect(() => manager.setVolume(Number.NaN)).toThrow(AudioManagerConfigError); + expect(() => manager.setVolume(Number.POSITIVE_INFINITY)).toThrow(AudioManagerConfigError); + expect(() => manager.setVolume(Number.NEGATIVE_INFINITY)).toThrow(AudioManagerConfigError); + expect(() => manager.setVolume(0)).not.toThrow(); + expect(() => manager.setVolume(100)).not.toThrow(); }); it('rejects volume changes before any resource exists', () => {