feat(memhub): [DET] 越界写追加同ptr记录检测 - 扫描记录表找同一 ptr 的多条记录,验证 alloc 重叠(Token 72B 与字符串 buf 7B 共用块 → 互相覆盖),定位 size=7 块被当 Token 写的根因

This commit is contained in:
TermiNexus committed 2026-08-25 15:57:45 +08:00
1 parent d3a84c25e0
commit 49feb6a2b4
1 file changed
+10
+10
View File
@@ -908,6 +908,16 @@ class MemBuddy(MemManager):
cis: t.CUInt64T = self._det_records[idx2 * 2 + 1]
stdio.printf("[%d]ptr=%llu sz=%llu ", ci2, cip, cis & (free_flag - 1))
ci2 += 1
# 重叠检测:同一 ptr 是否有多条记录(alloc 重叠实锤——不同 size
# 请求拿到同一块 → 互相覆盖;如 Token(72B) 与字符串 buf(7B) 共用块)
stdio.printf("\n同ptr记录: ")
ci3: t.CSizeT = 0
while ci3 < self._det_count:
cp3: t.CUInt64T = self._det_records[ci3 * 2]
cs3: t.CUInt64T = self._det_records[ci3 * 2 + 1]
if cp3 == p and (cs3 & free_flag) == 0:
stdio.printf("[%zu]sz=%llu ", ci3, cs3 & (free_flag - 1))
ci3 += 1
stdio.printf("\n")
stdlib.exit(1)
i += 1