clayborg added inline comments.

================
Comment at: source/Plugins/Process/elf-core/ProcessElfCore.cpp:668
         return status.ToError();
-      thread_data.name = prpsinfo.pr_fname;
+      thread_data.name.assign (prpsinfo.pr_fname, sizeof (prpsinfo.pr_fname));
       SetID(prpsinfo.pr_pid);
----------------
labath wrote:
> In case the name *is* null-terminated, this will forcibly include the \0 
> bytes into the string, which is not good.
> I think this should be something like `assign(pr_fname, strnlen(pr_fname, 
> sizeof(pf_fname))` (maybe there is a more c++-y way of writing that, but I 
> couldn't think of one).
> 
> I think adding a check for the thread name in the test still has value (asan 
> will just check we don't do anything stupid, but it won't verify we actually 
> produce the right name in the end), but I can do that as a follow-up.
This is how we cap segment lengths on ObjectFileMachO:
```
ConstString const_segname(load_cmd.segname, 
std::min<size_t>(strlen(load_cmd.segname), sizeof(load_cmd.segname)));
```

This won't keep ASAN happy though as the strlen might go off the end. You might 
be able to check the last byte since I am guessing they will zero fill by 
default:

```
if (prpsinfo.pr_fname[sizeof (prpsinfo.pr_fname)-1] != '\0')
  thread_data.name.assign (prpsinfo.pr_fname, sizeof (prpsinfo.pr_fname));
else
  thread_data.name = prpsinfo.pr_fname;
```


Repository:
  rL LLVM

https://reviews.llvm.org/D42828



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to