From 09b7e2a095a6614e88d63928b105af9bb34e8c07 Mon Sep 17 00:00:00 2001 From: Finn Voorhees Date: Wed, 21 May 2025 17:06:03 +0100 Subject: [PATCH] Fix heap-use-after-free in AudioMixerByMultiTrack --- .../Sources/Mixer/AudioMixerByMultiTrack.swift | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/HaishinKit/Sources/Mixer/AudioMixerByMultiTrack.swift b/HaishinKit/Sources/Mixer/AudioMixerByMultiTrack.swift index 103658186..3d97de3e1 100644 --- a/HaishinKit/Sources/Mixer/AudioMixerByMultiTrack.swift +++ b/HaishinKit/Sources/Mixer/AudioMixerByMultiTrack.swift @@ -67,6 +67,15 @@ final class AudioMixerByMultiTrack: AudioMixer { return status } + deinit { + if let mixerNode = mixerNode { + AudioOutputUnitStop(mixerNode.audioUnit) + } + if let outputNode = outputNode { + AudioOutputUnitStop(outputNode.audioUnit) + } + } + func append(_ track: UInt8, buffer: CMSampleBuffer) { if settings.mainTrack == track { inSourceFormat = buffer.formatDescription @@ -91,6 +100,12 @@ final class AudioMixerByMultiTrack: AudioMixer { } private func setupAudioNodes() throws { + if let mixerNode { + AudioOutputUnitStop(mixerNode.audioUnit) + } + if let outputNode { + AudioOutputUnitStop(outputNode.audioUnit) + } mixerNode = nil outputNode = nil guard let outputFormat else {