From 5210de9d8679fcff87661679abbf3d92bcfb925a Mon Sep 17 00:00:00 2001 From: EmilDohne <86836589+EmilDohne@users.noreply.github.com> Date: Wed, 16 Oct 2024 13:20:46 +0200 Subject: [PATCH] Fix UB if uncompressedIn is zero-sized --- CMakePresets.json | 4 ---- PhotoshopAPI/src/Core/Compression/Compression.h | 4 ++++ 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/CMakePresets.json b/CMakePresets.json index e6c64651..5a320508 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -15,10 +15,6 @@ "type": "equals", "lhs": "${hostSystemName}", "rhs": "Windows" - }, - "environment": { - "CFLAGS": "/fsanitize=address /Zi", - "CXXFLAGS": "/fsanitize=address /Zi" } }, { diff --git a/PhotoshopAPI/src/Core/Compression/Compression.h b/PhotoshopAPI/src/Core/Compression/Compression.h index 3011bcc8..9115f850 100644 --- a/PhotoshopAPI/src/Core/Compression/Compression.h +++ b/PhotoshopAPI/src/Core/Compression/Compression.h @@ -64,6 +64,10 @@ inline std::vector CompressData(std::span uncompressedIn, std::span< { if (compression == Enum::Compression::Raw) { + if (uncompressedIn.size() == 0) + { + return {}; + } endianEncodeBEArray(uncompressedIn); std::vector data(uncompressedIn.size() * sizeof(T)); std::memcpy(reinterpret_cast(data.data()), reinterpret_cast(uncompressedIn.data()), data.size());