From 7630713534b2c8240a6d72a045798a3697290c80 Mon Sep 17 00:00:00 2001 From: rustdesk Date: Thu, 13 May 2021 00:24:38 +0800 Subject: [PATCH] fix no audio issue with sample rate >= 48000 and strange crash issue (there is some overflow in unsafe code, will test again) --- src/platform/windows.rs | 3 +++ src/server/audio_service.rs | 5 ++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/platform/windows.rs b/src/platform/windows.rs index 11145ecb1..d4a46d4b2 100644 --- a/src/platform/windows.rs +++ b/src/platform/windows.rs @@ -105,6 +105,9 @@ pub fn get_cursor_data(hcursor: u64) -> ResultType { bm_mask.bmHeight / 2 }; let cbits_size = width * height * 4; + if cbits_size < 16 { + bail!("Invalid icon: too small"); // solve some crash + } let mut cbits: Vec = Vec::new(); cbits.resize(cbits_size as _, 0); let mut mbits: Vec = Vec::new(); diff --git a/src/server/audio_service.rs b/src/server/audio_service.rs index d903eefe2..d77e0c633 100644 --- a/src/server/audio_service.rs +++ b/src/server/audio_service.rs @@ -198,6 +198,7 @@ mod cpal_impl { log::error!("an error occurred on stream: {}", err); }; // Sample rate must be one of 8000, 12000, 16000, 24000, or 48000. + // Note: somehow 48000 not work let sample_rate_0 = config.sample_rate().0; let sample_rate = if sample_rate_0 < 12000 { 8000 @@ -205,10 +206,8 @@ mod cpal_impl { 12000 } else if sample_rate_0 < 24000 { 16000 - } else if sample_rate_0 < 48000 { - 24000 } else { - 48000 + 24000 }; let mut encoder = Encoder::new( sample_rate,