mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-08-31 09:45:24 +02:00
Clamp segment count in PSPModule::GetLongInfo
nm.nsegment is attacker-controlled but segmentaddr/segmentsize are fixed 4-entry arrays; the debug info loop read past them. Clamp to 4 like the other consumers.
This commit is contained in:
@@ -358,7 +358,9 @@ void PSPModule::GetLongInfo(char *ptr, int bufSize) const {
|
||||
StringWriter w(ptr, bufSize);
|
||||
w.F("%s: Version %d.%d. %d segments", nm.name, nm.version[1], nm.version[0], nm.nsegment).endl();
|
||||
w.F("Memory block: %08x (%08x/%d bytes)", memoryBlockAddr, memoryBlockSize, memoryBlockSize).endl();
|
||||
for (int i = 0; i < (int)nm.nsegment; i++) {
|
||||
// nm.nsegment is attacker-controlled (up to u32 max) but segmentaddr/
|
||||
// segmentsize are fixed 4-entry arrays; clamp like the other consumers.
|
||||
for (int i = 0; i < (int)nm.nsegment && i < 4; i++) {
|
||||
w.F(" %08x (%08x bytes)\n", nm.segmentaddr[i], nm.segmentsize[i]);
|
||||
}
|
||||
w.F("Text: %08x (%08x bytes)\n", nm.text_addr, nm.text_size);
|
||||
|
||||
Reference in New Issue
Block a user