linux: use offset of d_name to get size of dirents

Dirents with short names can have a d_name that fits inside padding at
the end of Dirent64.

Change-Id: I18057dad01f5a7d4a063028ca9f61fbe89ae7fc0
Reviewed-on: https://chromium-review.googlesource.com/c/1310413
Reviewed-by: Mark Mentovai <mark@chromium.org>
Commit-Queue: Joshua Peraza <jperaza@chromium.org>
diff --git a/util/linux/ptrace_client.cc b/util/linux/ptrace_client.cc
index aa3e024..34fcbc3 100644
--- a/util/linux/ptrace_client.cc
+++ b/util/linux/ptrace_client.cc
@@ -92,7 +92,7 @@
 void ReadDentsAsThreadIDs(char* buffer,
                           size_t size,
                           std::vector<pid_t>* threads) {
-  while (size > sizeof(Dirent64)) {
+  while (size > offsetof(Dirent64, d_name)) {
     auto dirent = reinterpret_cast<Dirent64*>(buffer);
     if (size < dirent->d_reclen) {
       LOG(ERROR) << "short dirent";