File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -628,7 +628,8 @@ sImage cGraphics_Amiga::DecodeIFF(const std::string& pFilename) {
628628 d0 = (int16)d0;
629629 Final += d0;
630630
631- if (i < std::size (Result.mPalette )) {
631+ const size_t PaletteCapacity = sizeof (Result.mPalette ) / sizeof (Result.mPalette [0 ]);
632+ if (i < PaletteCapacity) {
632633 Result.mPalette [i].mRed = ((Final >> 8 ) & 0xF ) << 2 ;
633634 Result.mPalette [i].mGreen = ((Final >> 4 ) & 0xF ) << 2 ;
634635 Result.mPalette [i].mBlue = ((Final >> 0 ) & 0xF ) << 2 ;
Original file line number Diff line number Diff line change @@ -40,6 +40,7 @@ tSharedBuffer cResources::fileGet( std::string pFilename ) {
4040tSharedBuffer cResources::fileDeRNC (tSharedBuffer pBuffer) {
4141 constexpr uint32 RNCHeaderSize = 18 ;
4242 constexpr uint32 MaxUnpackedSize = 64 * 1024 * 1024 ;
43+ const auto InvalidRNC = []() { return std::make_shared<std::vector<uint8>>(); };
4344
4445 if (pBuffer->size () < RNCHeaderSize)
4546 return pBuffer;
@@ -52,14 +53,14 @@ tSharedBuffer cResources::fileDeRNC(tSharedBuffer pBuffer) {
5253 uint32 PackedSize = readBEDWord (pBuffer->data () + 8 );
5354
5455 if ((PackedSize > (pBuffer->size () - RNCHeaderSize)) || !Size || (Size > MaxUnpackedSize))
55- return pBuffer ;
56+ return InvalidRNC () ;
5657
5758 auto Unpacked = std::make_shared<std::vector<uint8>>();
5859 Unpacked->resize (Size);
5960
6061 long Result = rnc_unpack (pBuffer->data (), Unpacked->data ());
6162 if (Result != static_cast <long >(Size))
62- return pBuffer ;
63+ return InvalidRNC () ;
6364
6465 return Unpacked;
6566}
You can’t perform that action at this time.
0 commit comments