From 55aecf5381dc725a9991af83a5c06088e52abcc0 Mon Sep 17 00:00:00 2001 From: Brian Gianforcaro Date: Sat, 27 Nov 2021 15:18:43 -0800 Subject: [PATCH] LibDSP: Fix potential slicing issue in volume_from_envelope Use pointer or reference to avoid slicing from "PitchedEnvelope" to "Envelope". This was found by SonarCloud. --- Userland/Libraries/LibDSP/Envelope.h | 2 +- Userland/Libraries/LibDSP/Synthesizers.cpp | 2 +- Userland/Libraries/LibDSP/Synthesizers.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibDSP/Envelope.h b/Userland/Libraries/LibDSP/Envelope.h index 85a2716b59..a21ccbeefe 100644 --- a/Userland/Libraries/LibDSP/Envelope.h +++ b/Userland/Libraries/LibDSP/Envelope.h @@ -50,7 +50,7 @@ struct Envelope { constexpr void reset() { envelope = -1; } - constexpr operator EnvelopeState() + constexpr operator EnvelopeState() const { if (!is_active()) return EnvelopeState::Off; diff --git a/Userland/Libraries/LibDSP/Synthesizers.cpp b/Userland/Libraries/LibDSP/Synthesizers.cpp index 4a3988d067..69f2ad65a5 100644 --- a/Userland/Libraries/LibDSP/Synthesizers.cpp +++ b/Userland/Libraries/LibDSP/Synthesizers.cpp @@ -64,7 +64,7 @@ Signal Classic::process_impl(Signal const& input_signal) } // Linear ADSR envelope with no peak adjustment. -double Classic::volume_from_envelope(Envelope envelope) +double Classic::volume_from_envelope(Envelope const& envelope) { switch (static_cast(envelope)) { case EnvelopeState::Off: diff --git a/Userland/Libraries/LibDSP/Synthesizers.h b/Userland/Libraries/LibDSP/Synthesizers.h index 3d89e014a6..1a7ebed6a6 100644 --- a/Userland/Libraries/LibDSP/Synthesizers.h +++ b/Userland/Libraries/LibDSP/Synthesizers.h @@ -49,7 +49,7 @@ public: private: virtual Signal process_impl(Signal const&) override; - double volume_from_envelope(Envelope); + double volume_from_envelope(Envelope const&); double wave_position(u8 note); double samples_per_cycle(u8 note); double sin_position(u8 note);