Răsfoiți Sursa

Fix buffer overflow in FBX::Util::DecodeBase64()

Maksim Kostin 1 an în urmă
părinte
comite
f701d702e4
1 a modificat fișierele cu 1 adăugiri și 1 ștergeri
  1. 1 1
      code/AssetLib/FBX/FBXUtil.cpp

+ 1 - 1
code/AssetLib/FBX/FBXUtil.cpp

@@ -155,7 +155,7 @@ size_t DecodeBase64(const char* in, size_t inLength, uint8_t* out, size_t maxOut
     const size_t realLength = inLength - size_t(in[inLength - 1] == '=') - size_t(in[inLength - 2] == '=');
     const size_t realLength = inLength - size_t(in[inLength - 1] == '=') - size_t(in[inLength - 2] == '=');
     size_t dst_offset = 0;
     size_t dst_offset = 0;
     int val = 0, valb = -8;
     int val = 0, valb = -8;
-    for (size_t src_offset = 0; src_offset < realLength; ++src_offset)
+    for (size_t src_offset = 0; src_offset < realLength && dst_offset < maxOutLength; ++src_offset)
     {
     {
         const uint8_t table_value = Util::DecodeBase64(in[src_offset]);
         const uint8_t table_value = Util::DecodeBase64(in[src_offset]);
         if (table_value == 255)
         if (table_value == 255)