Fixed a possibility of buffer overflow in Superscalar generator

This commit is contained in:
tevador 2019-05-09 08:29:42 +02:00
parent ddb3aea562
commit 3f7139d3aa

View File

@ -679,7 +679,7 @@ namespace randomx {
//if we have issued all macro-ops for the current RandomX instruction, create a new instruction //if we have issued all macro-ops for the current RandomX instruction, create a new instruction
if (macroOpIndex >= currentInstruction.getInfo().getSize()) { if (macroOpIndex >= currentInstruction.getInfo().getSize()) {
if (portsSaturated) if (portsSaturated || programSize >= RANDOMX_SUPERSCALAR_MAX_SIZE)
break; break;
//select an instruction so that the first macro-op fits into the current slot //select an instruction so that the first macro-op fits into the current slot
currentInstruction.createForSlot(gen, decodeBuffer->getCounts()[bufferIndex], decodeBuffer->getIndex(), decodeBuffer->getSize() == bufferIndex + 1, bufferIndex == 0); currentInstruction.createForSlot(gen, decodeBuffer->getCounts()[bufferIndex], decodeBuffer->getIndex(), decodeBuffer->getSize() == bufferIndex + 1, bufferIndex == 0);