diff options
author | Christopher Ferris <cferris@google.com> | 2016-05-05 11:21:11 -0700 |
---|---|---|
committer | Christopher Ferris <cferris@google.com> | 2016-05-05 14:21:25 -0700 |
commit | 157f2725ec949602757fe6fe1f78cfd42dec2a07 (patch) | |
tree | d9b3dcff99b11e4f3717ab520141b4bdfa1c95a2 /debuggerd | |
parent | d4946658225e7fdb12219924357814fcc0cd3cf9 (diff) | |
download | core-157f2725ec949602757fe6fe1f78cfd42dec2a07.tar.gz core-157f2725ec949602757fe6fe1f78cfd42dec2a07.tar.bz2 core-157f2725ec949602757fe6fe1f78cfd42dec2a07.zip |
Fix null pointer dereference.
In the function dump_thread_info, if /proc/<PID>/comm is unreadable, then
threadname will be used in a strncmp causing a crash. The fix is to
avoid the check if threadname is null.
Bug: 28615417
(cherry picked from commit 039976e553f261c5c43f9bfc295c31b9f6189ffc)
Change-Id: I1e61431b1549ecfdc49a72cbf193a364069cda79
Diffstat (limited to 'debuggerd')
-rw-r--r-- | debuggerd/tombstone.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/debuggerd/tombstone.cpp b/debuggerd/tombstone.cpp index 983d49e17..fa983fa1f 100644 --- a/debuggerd/tombstone.cpp +++ b/debuggerd/tombstone.cpp @@ -201,7 +201,7 @@ static void dump_signal_info(log_t* log, pid_t tid, int signal, int si_code) { static void dump_thread_info(log_t* log, pid_t pid, pid_t tid) { char path[64]; char threadnamebuf[1024]; - char* threadname = NULL; + char* threadname = nullptr; FILE *fp; snprintf(path, sizeof(path), "/proc/%d/comm", tid); @@ -217,13 +217,13 @@ static void dump_thread_info(log_t* log, pid_t pid, pid_t tid) { } // Blacklist logd, logd.reader, logd.writer, logd.auditd, logd.control ... static const char logd[] = "logd"; - if (!strncmp(threadname, logd, sizeof(logd) - 1) + if (threadname != nullptr && !strncmp(threadname, logd, sizeof(logd) - 1) && (!threadname[sizeof(logd) - 1] || (threadname[sizeof(logd) - 1] == '.'))) { log->should_retrieve_logcat = false; } char procnamebuf[1024]; - char* procname = NULL; + char* procname = nullptr; snprintf(path, sizeof(path), "/proc/%d/cmdline", pid); if ((fp = fopen(path, "r"))) { |