[compiler-rt] 5a93033 - [scudo] Minor refactor on element address validation (NFC) (#119436)

via llvm-commits llvm-commits at lists.llvm.org
Tue Dec 10 13:58:07 PST 2024


Author: ChiaHungDuan
Date: 2024-12-10T13:58:02-08:00
New Revision: 5a930339a5330dbab23d9eac28a609df9aa9c3fc

URL: https://github.com/llvm/llvm-project/commit/5a930339a5330dbab23d9eac28a609df9aa9c3fc
DIFF: https://github.com/llvm/llvm-project/commit/5a930339a5330dbab23d9eac28a609df9aa9c3fc.diff

LOG: [scudo] Minor refactor on element address validation (NFC) (#119436)

Added: 
    

Modified: 
    compiler-rt/lib/scudo/standalone/list.h

Removed: 
    


################################################################################
diff  --git a/compiler-rt/lib/scudo/standalone/list.h b/compiler-rt/lib/scudo/standalone/list.h
index e7c69e5bb88d67..e0b82788251b7f 100644
--- a/compiler-rt/lib/scudo/standalone/list.h
+++ b/compiler-rt/lib/scudo/standalone/list.h
@@ -74,7 +74,7 @@ template <class T> class LinkOp<T, /*LinkWithPtr=*/false> {
     if (Next == nullptr) {
       X->Next = getEndOfListVal();
     } else {
-      DCHECK_LE(static_cast<LinkTy>(Next - Base), Size);
+      assertElementInRange(Next);
       X->Next = static_cast<LinkTy>(Next - Base);
     }
   }
@@ -88,16 +88,22 @@ template <class T> class LinkOp<T, /*LinkWithPtr=*/false> {
   }
   // Set `X->Prev` to `Prev`.
   void setPrev(T *X, T *Prev) const {
-    DCHECK_LT(reinterpret_cast<uptr>(Prev),
-              reinterpret_cast<uptr>(Base + Size));
-    if (Prev == nullptr)
+    if (Prev == nullptr) {
       X->Prev = getEndOfListVal();
-    else
+    } else {
+      assertElementInRange(Prev);
       X->Prev = static_cast<LinkTy>(Prev - Base);
+    }
   }
 
   LinkTy getEndOfListVal() const { return T::EndOfListVal; }
 
+private:
+  void assertElementInRange(T *X) const {
+    DCHECK_GE(reinterpret_cast<uptr>(X), reinterpret_cast<uptr>(Base));
+    DCHECK_LE(static_cast<LinkTy>(X - Base), Size);
+  }
+
 protected:
   T *Base = nullptr;
   LinkTy Size = 0;


        


More information about the llvm-commits mailing list