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
Change-Id: I54eda86404c927dbf5a987f5dd2108487df9f16c
This commit is contained in:
Christopher Ferris 2016-05-05 11:21:11 -07:00
parent f2049163a4
commit 039976e553
1 changed files with 3 additions and 3 deletions

View File

@ -202,7 +202,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);
@ -218,13 +218,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"))) {