Files
fluxer-desktop-patched/fluxer_desktop/native/rust/fuzz/fuzz_targets/audio_converter.rs
T
brenden 682afacd30 Add native self-hosted instance connection to fluxer_desktop
Trimmed monorepo checkout (fluxer_desktop + packages/voice_engine_v2 +
tools/ci) with a "Connect to a Different Server" menu item and popout
that lets the desktop app switch to any self-hosted Fluxer instance,
plus fixes for well-known discovery on single-domain self-hosted
deployments and a false-positive ERR_ABORTED on same-origin client
redirects during the switch. Defaults to chat.fluxr.chat and uses an
isolated userData directory from the official build.
2026-07-01 18:22:43 -04:00

41 lines
1.2 KiB
Rust

#![no_main]
// SPDX-License-Identifier: AGPL-3.0-or-later
use arbitrary::Arbitrary;
use fluxer_desktop_native::mac_app_audio::audio_converter::{
AudioBuffer, AudioBufferListN, build_input_asbd, convert_buffer_list_to_interleaved_f32,
};
use libfuzzer_sys::fuzz_target;
#[derive(Arbitrary, Debug)]
struct Input {
samples: Vec<f32>,
sample_rate: f64,
output_rate: f64,
channels: u8,
}
fuzz_target!(|input: Input| {
let channels = u32::from(input.channels.clamp(1, 2));
let sample_rate = if input.sample_rate.is_finite() && input.sample_rate > 0.0 {
input.sample_rate.min(384_000.0)
} else {
48_000.0
};
let output_rate = if input.output_rate.is_finite() && input.output_rate > 0.0 {
input.output_rate.min(384_000.0)
} else {
48_000.0
};
let frame_count = (input.samples.len() as u32 / channels).min(4096);
let list = AudioBufferListN {
m_number_buffers: 1,
buffers: [AudioBuffer::from_slice(channels, &input.samples)],
};
let asbd = build_input_asbd(sample_rate, channels, false);
let mut out = vec![0.0_f32; frame_count as usize * 4 + 16];
let _ =
convert_buffer_list_to_interleaved_f32(asbd, &list, frame_count, output_rate, 2, &mut out);
});