diff --git a/linux-ramdump-parser-v2/ramdump.py b/linux-ramdump-parser-v2/ramdump.py index 8410eff25ca39f2c1bf1c00d090e3efc3da8704d..75d748507f0dd969996ce7872211ada368a0c5ae 100644 --- a/linux-ramdump-parser-v2/ramdump.py +++ b/linux-ramdump-parser-v2/ramdump.py @@ -109,6 +109,12 @@ class RamDump(): def unwind_frame_generic64(self, frame, trace=False): fp = frame.fp + low = frame.sp + mask = (self.ramdump.thread_size) - 1 + high = (low + mask) & (~mask) + + if (fp < low or fp > high or fp & 0xf): + return frame.sp = fp + 0x10 frame.fp = self.ramdump.read_word(fp)