Re: Program-assigned thread names on Windows

LRN
2016-08-02T09:47:13Z

[-- Attachment #1.1.1: Type: text/plain, Size: 1158 bytes --]

On 28.07.2016 10:21, LRN wrote:
> On 28.07.2016 0:35, Jon Turney wrote:
>>
>> Doing a bit of testing with this patch...
>>
>> On 26/07/2016 18:15, LRN wrote:
>>> + named_thread = find_thread_ptid (named_thread_ptid);
>>
>> ... it seems this may return NULL (e.g. if the thread we are naming was
>> short-lived and has already exited, or if the thread id was invalid) ...
>>
>>> +
>>> + thread_name = NULL;
>>> + thread_name_len = target_read_string (thread_name_target, &thread_name, 1025, 0);
>>> + if (thread_name_len > 0 && thread_name != NULL)
>>> + {
>>> + thread_name[thread_name_len - 1] = '\0';
>>> + if (thread_name[0] != '\0')
>>> + {
>>> + xfree (named_thread->name);
>>
>> ... so this becomes a null dereference.
>>
>>> + named_thread->name = thread_name;
>>> + }
>>> + else
>>> + {
>>> + xfree (thread_name);
>>> + }
>>
>
> True.
>
> The simplest fix for this is to turn the check
>> thread_name[0] != '\0'
> into
>> thread_name[0] != '\0' && named_thread != NULL
>
>

So, what happens now?

--
O< ascii ribbon - stop html email! - www.asciiribbon.org

[-- Attachment #1.1.2: 0x6759BA74.asc --]