[compiler-rt] [ASan] Honor `allocator_may_return_null` when set through user-function and fix large alloc edge case (PR #117929)

via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 27 13:40:16 PST 2024


github-actions[bot] wrote:

<!--LLVM CODE FORMAT COMMENT: {clang-format}-->


:warning: C/C++ code formatter, clang-format found issues in your code. :warning:

<details>
<summary>
You can test this locally with the following command:
</summary>

``````````bash
git-clang-format --diff 2f55de4e317ee93cdca839558acf8be2b5ac2b46 873cc218108826e4dd4413dccd5c5f6cb0757c84 --extensions cpp -- compiler-rt/test/asan/TestCases/Windows/allocator_may_return_null_set_via_user_function.cpp compiler-rt/test/asan/TestCases/allocator_may_return_null_limits.cpp compiler-rt/lib/asan/asan_flags.cpp compiler-rt/lib/sanitizer_common/sanitizer_allocator.cpp compiler-rt/lib/sanitizer_common/sanitizer_win.cpp
``````````

</details>

<details>
<summary>
View the diff from clang-format here.
</summary>

``````````diff
diff --git a/compiler-rt/lib/asan/asan_flags.cpp b/compiler-rt/lib/asan/asan_flags.cpp
index 1499c63fd1..bb40d61c47 100644
--- a/compiler-rt/lib/asan/asan_flags.cpp
+++ b/compiler-rt/lib/asan/asan_flags.cpp
@@ -245,7 +245,8 @@ void InitializeFlags() {
         // initialization due to these flags potentially changing.
         // These flags can be identified by looking at the work done in
         // `AsanInitInternal` inside of `asan_rtl.cpp`.
-        // See GH issue 'https://github.com/llvm/llvm-project/issues/117925' for details.
+        // See GH issue 'https://github.com/llvm/llvm-project/issues/117925' for
+        // details.
         SetAllocatorMayReturnNull(common_flags()->allocator_may_return_null);
       });
 
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cpp
index b8c772d7df..cef175c6f6 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_allocator.cpp
@@ -86,7 +86,7 @@ static void NORETURN ReportInternalAllocatorOutOfMemory(uptr requested_size) {
 void *InternalAlloc(uptr size, InternalAllocatorCache *cache, uptr alignment) {
   void *p = RawInternalAlloc(size, cache, alignment);
   if (UNLIKELY(!p)) {
-    if (AllocatorMayReturnNull()){
+    if (AllocatorMayReturnNull()) {
       return nullptr;
     }
     ReportInternalAllocatorOutOfMemory(size);
diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp b/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp
index 045a9a9d7b..1eef16fbde 100644
--- a/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp
+++ b/compiler-rt/lib/sanitizer_common/sanitizer_win.cpp
@@ -177,8 +177,9 @@ static void *ReturnNullptrOnOOMOrDie(uptr size, const char *mem_type,
   //  This does not seem to be officially documented, but is corroborated here:
   //  https://stackoverflow.com/questions/45833674/why-does-virtualalloc-fail-for-lpaddress-greater-than-0x6ffffffffff
 
-  // Note - It's possible that 'ERROR_COMMITMENT_LIMIT' needs to be handled here as well.
-  // It is currently not handled due to the lack of a reproducer that induces the error code.
+  // Note - It's possible that 'ERROR_COMMITMENT_LIMIT' needs to be handled here
+  // as well. It is currently not handled due to the lack of a reproducer that
+  // induces the error code.
   if (last_error == ERROR_NOT_ENOUGH_MEMORY ||
       last_error == ERROR_INVALID_PARAMETER)
     return nullptr;

``````````

</details>


https://github.com/llvm/llvm-project/pull/117929


More information about the llvm-commits mailing list