From 436c882119a3c8133f03c829fc1bdffcda4d6a0a Mon Sep 17 00:00:00 2001 From: fixxxedpoint <42604451+fixxxedpoint@users.noreply.github.com> Date: Wed, 26 Nov 2025 18:54:41 +0100 Subject: [PATCH] FIX: off-by-one error when identifying the patch/Rack version by reading the magic sequence of a zstd-compressed patch. --- src/CardinalPlugin.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/CardinalPlugin.cpp b/src/CardinalPlugin.cpp index dfe19a7..a1db4a9 100644 --- a/src/CardinalPlugin.cpp +++ b/src/CardinalPlugin.cpp @@ -28,6 +28,7 @@ #endif #include +#include #include #include "CardinalCommon.hpp" @@ -1104,9 +1105,10 @@ protected: rack::system::removeRecursively(fAutosavePath); rack::system::createDirectories(fAutosavePath); - static constexpr const char zstdMagic[] = "\x28\xb5\x2f\xfd"; + static constexpr const std::size_t zstdMagicSize = 4 + static constexpr const char zstdMagic[zstdMagicSize + 1] = "\x28\xb5\x2f\xfd"; - if (std::memcmp(data.data(), zstdMagic, sizeof(zstdMagic)) != 0) + if (std::memcmp(data.data(), zstdMagic, zstdMagicSize) != 0) { FILE* const f = std::fopen(rack::system::join(fAutosavePath, "patch.json").c_str(), "w"); DISTRHO_SAFE_ASSERT_RETURN(f != nullptr,);