feat(memhub): [DET] 越界写追加同ptr记录检测 - 扫描记录表找同一 ptr 的多条记录,验证 alloc 重叠(Token 72B 与字符串 buf 7B 共用块 → 互相覆盖),定位 size=7 块被当 Token 写的根因
This commit is contained in:
1 parent
d3a84c25e0
commit
49feb6a2b4
1 file changed
+10
@@ -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
|
||||
|
||||
Reference in new issue
Block a user