Browse Source

fix out of bounds memory read in Bidoo.REI pitchshifter (randomly caused loud noise bursts after patch loading)

pull/1639/head
bsp2 6 years ago
parent
commit
54ed9c8aa2
6 changed files with 3460 additions and 253 deletions
  1. +26
    -12
      plugins/community/repos/Bidoo/src/dep/filters/pitchshifter.h
  2. +32
    -0
      plugins/community/repos/Bidoo/src/dep/freeverb/revmodel.cpp
  3. +3
    -0
      todo.txt
  4. +5
    -1
      vst2_bin/CHANGELOG_VST.txt
  5. +3284
    -130
      vst2_bin/log.txt
  6. +110
    -110
      vst2_bin/settings.json

+ 26
- 12
plugins/community/repos/Bidoo/src/dep/filters/pitchshifter.h View File

@@ -26,6 +26,16 @@ struct PitchShifter {
double freqPerBin, expct, invOsamp, invFftFrameSize, invFftFrameSize2, invPi;
long fftFrameSize, osamp, i,k, qpd, index, inFifoLatency, stepSize, fftFrameSize2;

static void *my_calloc(size_t _size) {
// (note) same as calloc, this does not fix the noise issue in REI (edit: see below for actual fix)
void *r = malloc(_size);
if(NULL != r)
{
memset(r, 0, _size);
}
return r;
}

PitchShifter(long fftFrameSize, long osamp, float sampleRate) {
this->fftFrameSize = fftFrameSize;
this->osamp = osamp;
@@ -41,19 +51,19 @@ struct PitchShifter {
invFftFrameSize2 = 1.0f/fftFrameSize2;
invPi = 1.0f/M_PI;

gInFIFO = (float*)calloc(fftFrameSize,sizeof(float));
gOutFIFO = (float*)calloc(fftFrameSize,sizeof(float));
gInFIFO = (float*)my_calloc(fftFrameSize * sizeof(float));
gOutFIFO = (float*)my_calloc(fftFrameSize * sizeof(float));
gFFTworksp = (float*)pffft_aligned_malloc(fftFrameSize*sizeof(float));
memset((void*)gFFTworksp, 0, sizeof(fftFrameSize*sizeof(float))); // [bsp] 09Mar2019: fix noise burst after patch loading
memset((void*)gFFTworksp, 0, sizeof(fftFrameSize*sizeof(float)));
gFFTworkspOut = (float*)pffft_aligned_malloc(fftFrameSize*sizeof(float));
memset((void*)gFFTworkspOut, 0, sizeof(fftFrameSize*sizeof(float))); // [bsp] 09Mar2019: fix noise burst after patch loading
gLastPhase = (float*)calloc((fftFrameSize/2+1),sizeof(float));
gSumPhase = (float*)calloc((fftFrameSize/2+1),sizeof(float));
gOutputAccum = (float*)calloc(2*fftFrameSize,sizeof(float));
gAnaFreq = (float*)calloc(fftFrameSize,sizeof(float));
gAnaMagn = (float*)calloc(fftFrameSize,sizeof(float));
gSynFreq = (float*)calloc(fftFrameSize,sizeof(float));
gSynMagn = (float*)calloc(fftFrameSize,sizeof(float));
memset((void*)gFFTworkspOut, 0, sizeof(fftFrameSize*sizeof(float)));
gLastPhase = (float*)my_calloc((fftFrameSize/2+1) * sizeof(float));
gSumPhase = (float*)my_calloc((fftFrameSize/2+1) * sizeof(float));
gOutputAccum = (float*)my_calloc(2*fftFrameSize * sizeof(float));
gAnaFreq = (float*)my_calloc(fftFrameSize * sizeof(float));
gAnaMagn = (float*)my_calloc(fftFrameSize * sizeof(float));
gSynFreq = (float*)my_calloc(fftFrameSize * sizeof(float));
gSynMagn = (float*)my_calloc(fftFrameSize * sizeof(float));
}

~PitchShifter() {
@@ -73,11 +83,15 @@ struct PitchShifter {

void process(const float pitchShift, const float *input, float *output) {


for (i = 0; i < fftFrameSize; i++) {

/* As long as we have not yet collected enough data just read in */
gInFIFO[gRover] = input[i];
output[i] = gOutFIFO[gRover-inFifoLatency];
if(gRover >= inFifoLatency) // [bsp] 09Mar2019: this fixes the noise burst issue in REI
output[i] = gOutFIFO[gRover-inFifoLatency];
else
output[i] = 0.0f;
gRover++;

/* now we have enough data for processing */


+ 32
- 0
plugins/community/repos/Bidoo/src/dep/freeverb/revmodel.cpp View File

@@ -6,11 +6,43 @@

#include "revmodel.hpp"
#include <math.h>
#include <string.h> // memset

namespace rack_plugin_Bidoo {

revmodel::revmodel()
{

// (note) still doesn't fix REI noise burst issue
#define Dclearbuf(b) memset((void*)b, 0, sizeof(b))
Dclearbuf(bufcombL1);
Dclearbuf(bufcombR1);
Dclearbuf(bufcombL2);
Dclearbuf(bufcombR2);
Dclearbuf(bufcombL3);
Dclearbuf(bufcombR3);
Dclearbuf(bufcombL4);
Dclearbuf(bufcombR4);
Dclearbuf(bufcombL5);
Dclearbuf(bufcombR5);
Dclearbuf(bufcombL6);
Dclearbuf(bufcombR6);
Dclearbuf(bufcombL7);
Dclearbuf(bufcombR7);
Dclearbuf(bufcombL8);
Dclearbuf(bufcombR8);

// Buffers for the allpasses
Dclearbuf(bufallpassL1);
Dclearbuf(bufallpassR1);
Dclearbuf(bufallpassL2);
Dclearbuf(bufallpassR2);
Dclearbuf(bufallpassL3);
Dclearbuf(bufallpassR3);
Dclearbuf(bufallpassL4);
Dclearbuf(bufallpassR4);
#undef Dclearbuf
// Tie the components to their buffers
combL[0].setbuffer(bufcombL1,combtuningL1);
combR[0].setbuffer(bufcombR1,combtuningR1);


+ 3
- 0
todo.txt View File

@@ -165,6 +165,9 @@



------------------------------------------------------------------------
+ REI: fix noise burst issue in pitchshifter (out of bounds read)






+ 5
- 1
vst2_bin/CHANGELOG_VST.txt View File

@@ -1,4 +1,9 @@

** March 9th, 2019
- fix loud noise burst issue in Bidoo.REI module
- add patch collection (see vst2_bin/patches/bsp/, 90 patches)


** March 8th, 2019
- update AmalgamatedHarmonics.* 0.6.1 => 0.6.5
- update Alikins.* 0.6.0 => 0.6.6
@@ -144,7 +149,6 @@
- add module Valley.Interzone



** October 31st, 2018
- add Linux port
- thanks to Github user "cameronleger" for porting LGLW !


+ 3284
- 130
vst2_bin/log.txt
File diff suppressed because it is too large
View File


+ 110
- 110
vst2_bin/settings.json View File

@@ -28,7 +28,7 @@
"idleDetectFx": 2,
"allowCursorLock": true,
"sampleRate": 44100.0,
"lastPath": "",
"lastPath": "F:\\eureka_data\\vst_patches\\bsp_VeeSeeVST Rack 0.6.1 I_1983212406\\BSP chip bell 1.vcv",
"moduleBrowser": {
"favorites": [
{
@@ -44,32 +44,56 @@
"model": "SpecificValue"
},
{
"plugin": "Bogaudio",
"model": "Bogaudio-Additator"
"plugin": "AS",
"model": "ADSR"
},
{
"plugin": "Bidoo",
"model": "BISTROT"
"plugin": "AS",
"model": "AtNuVrTr"
},
{
"plugin": "Bogaudio",
"model": "Bogaudio-VCAmp"
"plugin": "AS",
"model": "TriLFO"
},
{
"plugin": "Bogaudio",
"model": "Bogaudio-XFade"
"plugin": "AudibleInstruments",
"model": "Rings"
},
{
"plugin": "Bogaudio",
"model": "Bogaudio-XCO"
"plugin": "AudibleInstruments",
"model": "Braids"
},
{
"plugin": "Bidoo",
"model": "ÎŁ"
"plugin": "AudibleInstruments",
"model": "Tides"
},
{
"plugin": "Bogaudio",
"model": "Bogaudio-Noise"
"plugin": "AudibleInstruments",
"model": "Elements"
},
{
"plugin": "AudibleInstruments",
"model": "Clouds"
},
{
"plugin": "AudibleInstruments",
"model": "Stages"
},
{
"plugin": "Befaco",
"model": "Mixer"
},
{
"plugin": "AudibleInstruments",
"model": "Plaits"
},
{
"plugin": "Autodafe",
"model": "Multiple 1x8"
},
{
"plugin": "Befaco",
"model": "SlewLimiter"
},
{
"plugin": "Bidoo",
@@ -77,43 +101,59 @@
},
{
"plugin": "Bogaudio",
"model": "Bogaudio-SampleHold"
"model": "Bogaudio-Mult"
},
{
"plugin": "Bogaudio",
"model": "Bogaudio-Mult"
"model": "Bogaudio-Switch"
},
{
"plugin": "Bogaudio",
"model": "Bogaudio-XFade"
},
{
"plugin": "Bidoo",
"model": "lIMbO"
},
{
"plugin": "Bidoo",
"model": "ÎŁ"
},
{
"plugin": "Bogaudio",
"model": "Bogaudio-Switch"
"model": "Bogaudio-XCO"
},
{
"plugin": "DHE-Modules",
"model": "Cubic"
"plugin": "Bogaudio",
"model": "Bogaudio-Additator"
},
{
"plugin": "huaba",
"model": "EQ3"
"plugin": "Bidoo",
"model": "BISTROT"
},
{
"plugin": "HetrickCV",
"model": "Exponent"
"plugin": "Bogaudio",
"model": "Bogaudio-VCAmp"
},
{
"plugin": "Fundamental",
"model": "VCO2"
"plugin": "Bogaudio",
"model": "Bogaudio-Noise"
},
{
"plugin": "Bogaudio",
"model": "Bogaudio-SampleHold"
},
{
"plugin": "ErraticInstruments",
"model": "MPEToCV"
},
{
"plugin": "Fundamental",
"model": "LFO2"
"plugin": "FrankBussFormula",
"model": "FrankBussFormula"
},
{
"plugin": "DHE-Modules",
"model": "Cubic"
},
{
"plugin": "Fundamental",
@@ -121,23 +161,27 @@
},
{
"plugin": "Fundamental",
"model": "VCA"
"model": "VCO"
},
{
"plugin": "Fundamental",
"model": "LFO"
"model": "VCO2"
},
{
"plugin": "FrankBussFormula",
"model": "FrankBussFormula"
"plugin": "Fundamental",
"model": "Scope"
},
{
"plugin": "Fundamental",
"model": "VCO"
"model": "VCA"
},
{
"plugin": "Fundamental",
"model": "Scope"
"model": "VCMixer"
},
{
"plugin": "Fundamental",
"model": "LFO2"
},
{
"plugin": "Fundamental",
@@ -145,35 +189,39 @@
},
{
"plugin": "Fundamental",
"model": "VCMixer"
"model": "LFO"
},
{
"plugin": "LindenbergResearch",
"model": "MS20 VCF"
"model": "VCF"
},
{
"plugin": "JE",
"model": "RingModulator"
"plugin": "HetrickCV",
"model": "Exponent"
},
{
"plugin": "LindenbergResearch",
"model": "VCF"
"plugin": "JE",
"model": "RingModulator"
},
{
"plugin": "LindenbergResearch",
"model": "Westcoast VCS"
"model": "MS20 VCF"
},
{
"plugin": "LindenbergResearch",
"model": "VCO"
"plugin": "huaba",
"model": "EQ3"
},
{
"plugin": "ML_modules",
"model": "VoltMeter"
},
{
"plugin": "mscHack",
"model": "Maude221"
"plugin": "LindenbergResearch",
"model": "Westcoast VCS"
},
{
"plugin": "LindenbergResearch",
"model": "VCO"
},
{
"plugin": "PG-Instruments",
@@ -183,17 +231,25 @@
"plugin": "PG-Instruments",
"model": "PGPanner"
},
{
"plugin": "mscHack",
"model": "Maude221"
},
{
"plugin": "Southpole",
"model": "Abr"
},
{
"plugin": "Valley",
"model": "Plateau"
},
{
"plugin": "bsp",
"model": "Obxd_VCF"
"model": "AttenuMixer"
},
{
"plugin": "Template_shared",
"model": "MyModule"
"plugin": "bsp",
"model": "DownSampler"
},
{
"plugin": "bsp",
@@ -205,15 +261,11 @@
},
{
"plugin": "bsp",
"model": "Sway"
},
{
"plugin": "bsp",
"model": "DownSampler"
"model": "Scanner"
},
{
"plugin": "bsp",
"model": "RMS"
"model": "Obxd_VCF"
},
{
"plugin": "bsp",
@@ -221,67 +273,15 @@
},
{
"plugin": "bsp",
"model": "AttenuMixer"
},
{
"plugin": "Valley",
"model": "Plateau"
"model": "RMS"
},
{
"plugin": "bsp",
"model": "Scanner"
},
{
"plugin": "AudibleInstruments",
"model": "Clouds"
},
{
"plugin": "AS",
"model": "AtNuVrTr"
},
{
"plugin": "AudibleInstruments",
"model": "Tides"
},
{
"plugin": "AS",
"model": "TriLFO"
},
{
"plugin": "AS",
"model": "ADSR"
},
{
"plugin": "AudibleInstruments",
"model": "Rings"
},
{
"plugin": "AudibleInstruments",
"model": "Elements"
},
{
"plugin": "AudibleInstruments",
"model": "Braids"
},
{
"plugin": "AudibleInstruments",
"model": "Stages"
},
{
"plugin": "Autodafe",
"model": "Multiple 1x8"
},
{
"plugin": "Befaco",
"model": "Mixer"
},
{
"plugin": "Befaco",
"model": "SlewLimiter"
"model": "Sway"
},
{
"plugin": "AudibleInstruments",
"model": "Plaits"
"plugin": "Template_shared",
"model": "MyModule"
}
]
},


Loading…
Cancel
Save