Avoid pointer wrapping and undefined behavior when checking bounds in Symbolizer::FindObjFile() This avoids a potential out-of-bounds memory read, which could allow an attacker to read arbitrary memory. PiperOrigin-RevId: 945392650 Change-Id: I7dd13829e3fc32edbc51690704aaf4854d4e2540
diff --git a/absl/debugging/symbolize_elf.inc b/absl/debugging/symbolize_elf.inc index f0f02a1..aa924f9 100644 --- a/absl/debugging/symbolize_elf.inc +++ b/absl/debugging/symbolize_elf.inc
@@ -1212,7 +1212,8 @@ ObjFile *obj = addr_map_.At(lo); SAFE_ASSERT(obj->end_addr > addr); if (addr >= obj->start_addr && - reinterpret_cast<const char *>(addr) + len <= obj->end_addr) + len <= static_cast<size_t>(static_cast<const char*>(obj->end_addr) - + static_cast<const char*>(addr))) return obj; }