Describe the bug
In src/helpers/discardedRecording.js:
shouldSaveDiscardedRecording(settings, durationSeconds, policyState = null) evaluates durationSeconds >= MIN_DISCARDED_DURATION_SECONDS. When durationSeconds is Infinity or non-finite, it returns true instead of false.
- When
settings is a non-object primitive (e.g. true or "invalid"), settings.dataRetentionEnabled and settings.saveDiscardedTranscriptions evaluate improperly or can cause unexpected policy rule evaluations.
To Reproduce
- Call
shouldSaveDiscardedRecording(settings, Infinity) -> returns true (expected false).
- Call
shouldSaveDiscardedRecording("invalid", 3) -> returns false but doesn't validate object type upfront.
Expected Behavior
shouldSaveDiscardedRecording should return false if !settings || typeof settings !== "object".
shouldSaveDiscardedRecording should return false if !Number.isFinite(durationSeconds) or durationSeconds < MIN_DISCARDED_DURATION_SECONDS.
Describe the bug
In
src/helpers/discardedRecording.js:shouldSaveDiscardedRecording(settings, durationSeconds, policyState = null)evaluatesdurationSeconds >= MIN_DISCARDED_DURATION_SECONDS. WhendurationSecondsisInfinityor non-finite, it returnstrueinstead offalse.settingsis a non-object primitive (e.g.trueor"invalid"),settings.dataRetentionEnabledandsettings.saveDiscardedTranscriptionsevaluate improperly or can cause unexpected policy rule evaluations.To Reproduce
shouldSaveDiscardedRecording(settings, Infinity)-> returnstrue(expectedfalse).shouldSaveDiscardedRecording("invalid", 3)-> returnsfalsebut doesn't validate object type upfront.Expected Behavior
shouldSaveDiscardedRecordingshould returnfalseif!settings || typeof settings !== "object".shouldSaveDiscardedRecordingshould returnfalseif!Number.isFinite(durationSeconds)ordurationSeconds < MIN_DISCARDED_DURATION_SECONDS.