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;
     }