DPF

DISTRHO Plugin Framework
Log | Files | Refs | Submodules | README | LICENSE

commit 24667102808755a7c88ad29e3a893010e4ea3f7c
parent 20c2fce8321cceaeffd1f2e1d16806e6e3585359
Author: falkTX <falktx@falktx.com>
Date:   Sat, 10 Jul 2021 23:41:44 +0100

Protect against null data

Signed-off-by: falkTX <falktx@falktx.com>

Diffstat:
Mdistrho/src/jackbridge/JackBridge.cpp | 1+
Mdistrho/src/jackbridge/RtAudioBridge.hpp | 19++++++++++++-------
2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/distrho/src/jackbridge/JackBridge.cpp b/distrho/src/jackbridge/JackBridge.cpp @@ -2036,6 +2036,7 @@ uint32_t jackbridge_transport_query(const jack_client_t* client, jack_position_t if (pos != nullptr) { // invalidate + std::memset(pos, 0, sizeof(*pos)); pos->unique_1 = 0; pos->unique_2 = 1; } diff --git a/distrho/src/jackbridge/RtAudioBridge.hpp b/distrho/src/jackbridge/RtAudioBridge.hpp @@ -177,7 +177,8 @@ struct RtAudioBridge { if (self->jackProcessCallback == nullptr) { - std::memset((float*)outputBuffer, 0, sizeof(float)*numFrames*DISTRHO_PLUGIN_NUM_OUTPUTS); + if (outputBuffer != nullptr) + std::memset((float*)outputBuffer, 0, sizeof(float)*numFrames*DISTRHO_PLUGIN_NUM_OUTPUTS); return 0; } @@ -186,14 +187,18 @@ struct RtAudioBridge { uint i = 0; # if DISTRHO_PLUGIN_NUM_INPUTS > 0 - float* const insPtr = (float*)inputBuffer; - for (uint j=0; j<DISTRHO_PLUGIN_NUM_INPUTS; ++j, ++i) - selfAudioBuffers[i] = insPtr + (j * numFrames); + if (float* const insPtr = (float*)inputBuffer) + { + for (uint j=0; j<DISTRHO_PLUGIN_NUM_INPUTS; ++j, ++i) + selfAudioBuffers[i] = insPtr + (j * numFrames); + } # endif # if DISTRHO_PLUGIN_NUM_OUTPUTS > 0 - float* const outsPtr = (float*)outputBuffer; - for (uint j=0; j<DISTRHO_PLUGIN_NUM_OUTPUTS; ++j, ++i) - selfAudioBuffers[i] = outsPtr + (j * numFrames); + if (float* const outsPtr = (float*)outputBuffer) + { + for (uint j=0; j<DISTRHO_PLUGIN_NUM_OUTPUTS; ++j, ++i) + selfAudioBuffers[i] = outsPtr + (j * numFrames); + } # endif #endif