diff --git a/src/lib/tvgBinaryDesc.h b/src/lib/tvgBinaryDesc.h index a0189b64..a06727d2 100644 --- a/src/lib/tvgBinaryDesc.h +++ b/src/lib/tvgBinaryDesc.h @@ -35,6 +35,7 @@ using TvgBinFlag = TvgBinByte; //Header +#define TVG_HEADER_SIZE 33 //TVG_HEADER_SIGNATURE_LENGTH + TVG_HEADER_VERSION_LENGTH + 2*SIZE(float) + TVG_HEADER_RESERVED_LENGTH + TVG_HEADER_COMPRESS_SIZE #define TVG_HEADER_SIGNATURE "ThorVG" #define TVG_HEADER_SIGNATURE_LENGTH 6 #define TVG_HEADER_VERSION "000400" //Major 00, Minor 04, Micro 00 diff --git a/src/loaders/tvg/tvgTvgLoader.cpp b/src/loaders/tvg/tvgTvgLoader.cpp index 8916b92c..a15dda6a 100644 --- a/src/loaders/tvg/tvgTvgLoader.cpp +++ b/src/loaders/tvg/tvgTvgLoader.cpp @@ -50,6 +50,9 @@ bool TvgLoader::readHeader() { if (!ptr) return false; + //Make sure the size is large enough to hold the header + if (size < TVG_HEADER_SIZE) return false; + //1. Signature if (memcmp(ptr, TVG_HEADER_SIGNATURE, TVG_HEADER_SIGNATURE_LENGTH)) return false; ptr += TVG_HEADER_SIGNATURE_LENGTH; @@ -225,4 +228,4 @@ unique_ptr TvgLoader::paint() this->done(); if (root) return move(root); return nullptr; -} \ No newline at end of file +}