summaryrefslogtreecommitdiffstats
path: root/debuggerd
diff options
context:
space:
mode:
authorChristopher Ferris <cferris@google.com>2016-05-05 11:21:11 -0700
committerChristopher Ferris <cferris@google.com>2016-05-05 14:21:25 -0700
commit157f2725ec949602757fe6fe1f78cfd42dec2a07 (patch)
treed9b3dcff99b11e4f3717ab520141b4bdfa1c95a2 /debuggerd
parentd4946658225e7fdb12219924357814fcc0cd3cf9 (diff)
downloadsystem_core-157f2725ec949602757fe6fe1f78cfd42dec2a07.tar.gz
system_core-157f2725ec949602757fe6fe1f78cfd42dec2a07.tar.bz2
system_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.cpp6
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"))) {