From 2b487f31064fe07d3b3398a7432edd1fa5777796 Mon Sep 17 00:00:00 2001 From: Matt Mitchell Date: Thu, 2 Apr 2020 08:15:04 -0700 Subject: [PATCH] Fix write behind allocated memory in thread name setting (#34424) (#34437) The code in CorUnix::InternalSetThreadDescription is writing behind the end of the allocated memory in case the name is shorter than 16 characters. That is causing memory heap corruption. Co-authored-by: Jan Vorlicek --- src/coreclr/src/pal/src/thread/thread.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/coreclr/src/pal/src/thread/thread.cpp b/src/coreclr/src/pal/src/thread/thread.cpp index 1473601c51252..159ef03cf0b60 100644 --- a/src/coreclr/src/pal/src/thread/thread.cpp +++ b/src/coreclr/src/pal/src/thread/thread.cpp @@ -1666,7 +1666,10 @@ CorUnix::InternalSetThreadDescription( // Null terminate early. // pthread_setname_np only accepts up to 16 chars. - nameBuf[15] = '\0'; + if (nameSize > 15) + { + nameBuf[15] = '\0'; + } error = pthread_setname_np(pTargetThread->GetPThreadSelf(), nameBuf);