From 03c54adb9a59c199b5998ca6cac6a431f01a69ee Mon Sep 17 00:00:00 2001 From: Jan Holthuis Date: Tue, 24 Nov 2020 17:30:21 +0100 Subject: engine/filters: Fix potential out-of-bounds read in setCoefs{2} To prevent this, the methods now take additional buffer size arguments. Fixes these MSVC warnings: src\engine/filters/enginefilteriir.h(99): warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\ucrt\string.h(130): note: see declaration of 'strcpy' src\engine/filters/enginefilteriir.h(94): note: while compiling class template member function 'void EngineFilterIIR<4,IIR_HP>::setCoefs(const char *,double,double,double,int)' src\engine\filters\enginefilterbessel4.cpp(80): note: see reference to function template instantiation 'void EngineFilterIIR<4,IIR_HP>::setCoefs(const char *,double,double,double,int)' being compiled src\engine/filters/enginefilteriir.h(383): note: see reference to class template instantiation 'EngineFilterIIR<4,IIR_HP>' being compiled --- src/engine/filters/enginefilterbiquad1.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'src/engine/filters/enginefilterbiquad1.cpp') diff --git a/src/engine/filters/enginefilterbiquad1.cpp b/src/engine/filters/enginefilterbiquad1.cpp index 1bf853462b..ee9572befb 100644 --- a/src/engine/filters/enginefilterbiquad1.cpp +++ b/src/engine/filters/enginefilterbiquad1.cpp @@ -13,7 +13,7 @@ void EngineFilterBiquad1LowShelving::setFrequencyCorners(int sampleRate, double Q, double dBgain) { format_fidspec(m_spec, sizeof(m_spec), "LsBq/%.10f/%.10f", Q, dBgain); - setCoefs(m_spec, sampleRate, centerFreq); + setCoefs(m_spec, sizeof(m_spec), sampleRate, centerFreq); } EngineFilterBiquad1Peaking::EngineFilterBiquad1Peaking(int sampleRate, @@ -27,7 +27,7 @@ void EngineFilterBiquad1Peaking::setFrequencyCorners(int sampleRate, double Q, double dBgain) { format_fidspec(m_spec, sizeof(m_spec), "PkBq/%.10f/%.10f", Q, dBgain); - setCoefs(m_spec, sampleRate, centerFreq); + setCoefs(m_spec, sizeof(m_spec), sampleRate, centerFreq); } EngineFilterBiquad1HighShelving::EngineFilterBiquad1HighShelving(int sampleRate, @@ -42,7 +42,7 @@ void EngineFilterBiquad1HighShelving::setFrequencyCorners(int sampleRate, double Q, double dBgain) { format_fidspec(m_spec, sizeof(m_spec), "HsBq/%.10f/%.10f", Q, dBgain); - setCoefs(m_spec, sampleRate, centerFreq); + setCoefs(m_spec, sizeof(m_spec), sampleRate, centerFreq); } EngineFilterBiquad1Low::EngineFilterBiquad1Low(int sampleRate, @@ -57,7 +57,7 @@ void EngineFilterBiquad1Low::setFrequencyCorners(int sampleRate, double centerFreq, double Q) { format_fidspec(m_spec, sizeof(m_spec), "LpBq/%.10f", Q); - setCoefs(m_spec, sampleRate, centerFreq); + setCoefs(m_spec, sizeof(m_spec), sampleRate, centerFreq); } EngineFilterBiquad1Band::EngineFilterBiquad1Band(int sampleRate, @@ -70,7 +70,7 @@ void EngineFilterBiquad1Band::setFrequencyCorners(int sampleRate, double centerFreq, double Q) { format_fidspec(m_spec, sizeof(m_spec), "BpBq/%.10f", Q); - setCoefs(m_spec, sampleRate, centerFreq); + setCoefs(m_spec, sizeof(m_spec), sampleRate, centerFreq); } EngineFilterBiquad1High::EngineFilterBiquad1High(int sampleRate, @@ -85,5 +85,5 @@ void EngineFilterBiquad1High::setFrequencyCorners(int sampleRate, double centerFreq, double Q) { format_fidspec(m_spec, sizeof(m_spec), "HpBq/%.10f", Q); - setCoefs(m_spec, sampleRate, centerFreq); + setCoefs(m_spec, sizeof(m_spec), sampleRate, centerFreq); } -- cgit v1.2.3