Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 039976e5 authored by Christopher Ferris's avatar Christopher Ferris
Browse files

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
parent f2049163
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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"))) {