[compiler-rt] [ASAN] fix a nullptr dereference error. (PR #116011)

via llvm-commits llvm-commits at lists.llvm.org
Wed Nov 13 01:06:32 PST 2024


llvmbot wrote:


<!--LLVM PR SUMMARY COMMENT-->

@llvm/pr-subscribers-compiler-rt-sanitizer

Author: Wu Yingcong (yingcong-wu)

<details>
<summary>Changes</summary>

`parent_context` is used without checking for nullptr and we can see in LINE 50 that it could totally be nullptr. This patch addresses this issue.

---
Full diff: https://github.com/llvm/llvm-project/pull/116011.diff


1 Files Affected:

- (modified) compiler-rt/lib/asan/asan_descriptions.cpp (+4-6) 


``````````diff
diff --git a/compiler-rt/lib/asan/asan_descriptions.cpp b/compiler-rt/lib/asan/asan_descriptions.cpp
index caec79313e22ff..c9f3e4d682d959 100644
--- a/compiler-rt/lib/asan/asan_descriptions.cpp
+++ b/compiler-rt/lib/asan/asan_descriptions.cpp
@@ -45,6 +45,9 @@ void DescribeThread(AsanThreadContext *context) {
   }
   context->announced = true;
 
+  InternalScopedString str;
+  str.AppendF("Thread %s", AsanThreadIdAndName(context).c_str());
+
   AsanThreadContext *parent_context =
       context->parent_tid == kInvalidTid
           ? nullptr
@@ -52,12 +55,7 @@ void DescribeThread(AsanThreadContext *context) {
 
   // `context->parent_tid` may point to reused slot. Check `unique_id` which
   // is always smaller for the parent, always greater for a new user.
-  if (context->unique_id <= parent_context->unique_id)
-    parent_context = nullptr;
-
-  InternalScopedString str;
-  str.AppendF("Thread %s", AsanThreadIdAndName(context).c_str());
-  if (!parent_context) {
+  if (!parent_context || context->unique_id <= parent_context->unique_id) {
     str.Append(" created by unknown thread\n");
     Printf("%s", str.data());
     return;

``````````

</details>


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


More information about the llvm-commits mailing list