OpenGL: Fixing an ancient out of bounds memory read bug

#rb Dmitriy.Dyomin
#preflight 62d16db6af68cd745b73200e

#ROBOMERGE-AUTHOR: allan.bentham
#ROBOMERGE-SOURCE: CL 21110218 via CL 21110230 via CL 21110245 via CL 21110253 via CL 21110262
#ROBOMERGE-BOT: UE5 (Release-Engine-Staging -> Main) (v972-20964824)

[CL 21111976 by robomerge in ue5-main branch]
This commit is contained in:
robomerge
2022-07-15 12:25:10 -04:00
parent 7e15ffac95
commit 5d26bbfdbc

View File

@@ -138,13 +138,14 @@ struct FOpenGLShaderBindings
bEqual &= FMemory::Memcmp(A.PackedGlobalArrays.GetData(),B.PackedGlobalArrays.GetData(),A.PackedGlobalArrays.GetTypeSize()*A.PackedGlobalArrays.Num()) == 0;
for (int32 Item = 0; Item < A.PackedUniformBuffers.Num(); Item++)
for (int32 Item = 0; bEqual && Item < A.PackedUniformBuffers.Num(); Item++)
{
const TArray<CrossCompiler::FPackedArrayInfo> &ArrayA = A.PackedUniformBuffers[Item];
const TArray<CrossCompiler::FPackedArrayInfo> &ArrayB = B.PackedUniformBuffers[Item];
const TArray<CrossCompiler::FPackedArrayInfo>& ArrayA = A.PackedUniformBuffers[Item];
const TArray<CrossCompiler::FPackedArrayInfo>& ArrayB = B.PackedUniformBuffers[Item];
bEqual &= FMemory::Memcmp(ArrayA.GetData(),ArrayB.GetData(),ArrayA.GetTypeSize()*ArrayA.Num()) == 0;
bEqual = bEqual && (ArrayA.Num() == ArrayB.Num()) && (FMemory::Memcmp(ArrayA.GetData(), ArrayB.GetData(), ArrayA.GetTypeSize() * ArrayA.Num()) == 0);
}
for (int32 Item = 0; bEqual && Item < A.InputVaryings.Num(); Item++)
{