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

Commit 88446932 authored by Tom Cherry's avatar Tom Cherry Committed by android-build-merger
Browse files

Remove old logger_entry_v* formats am: 441054aa am: 5bf85dfa am: ead2a4a2

am: 2649790a

Change-Id: If8476692e1ef044b12299af3c9bebec509008c55
parents e2e3690f 2649790a
Loading
Loading
Loading
Loading
+1 −1
Original line number Diff line number Diff line
@@ -595,7 +595,7 @@ static void dump_log_file(log_t* log, pid_t pid, const char* filename, unsigned
      }
      AndroidLogEntry e;
      char buf[512];
      if (android_log_processBinaryLogBuffer(&log_entry.entry_v1, &e, g_eventTagMap, buf,
      if (android_log_processBinaryLogBuffer(&log_entry.entry, &e, g_eventTagMap, buf,
                                             sizeof(buf)) == 0) {
        _LOG(log, logtype::LOGS, "%s.%03d %5d %5d %c %-8.*s: %s\n", timeBuf,
             log_entry.entry.nsec / 1000000, log_entry.entry.pid, log_entry.entry.tid, 'I',
+4 −59
Original line number Diff line number Diff line
@@ -50,53 +50,9 @@ extern "C" {

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wzero-length-array"
/*
 * The userspace structure for version 1 of the logger_entry ABI.
 */
struct logger_entry {
  uint16_t len;      /* length of the payload */
  uint16_t __pad; /* no matter what, we get 2 bytes of padding */
  int32_t pid;    /* generating process's pid */
  int32_t tid;    /* generating process's tid */
  int32_t sec;    /* seconds since Epoch */
  int32_t nsec;   /* nanoseconds */
  char msg[0]; /* the entry's payload */
};

/*
 * The userspace structure for version 2 of the logger_entry ABI.
 */
struct logger_entry_v2 {
  uint16_t len;      /* length of the payload */
  uint16_t hdr_size; /* sizeof(struct logger_entry_v2) */
  int32_t pid;       /* generating process's pid */
  int32_t tid;       /* generating process's tid */
  int32_t sec;       /* seconds since Epoch */
  int32_t nsec;      /* nanoseconds */
  uint32_t euid;     /* effective UID of logger */
  char msg[0]; /* the entry's payload */
} __attribute__((__packed__));

/*
 * The userspace structure for version 3 of the logger_entry ABI.
 */
struct logger_entry_v3 {
  uint16_t len;      /* length of the payload */
  uint16_t hdr_size; /* sizeof(struct logger_entry_v3) */
  int32_t pid;       /* generating process's pid */
  int32_t tid;       /* generating process's tid */
  int32_t sec;       /* seconds since Epoch */
  int32_t nsec;      /* nanoseconds */
  uint32_t lid;      /* log id of the payload */
  char msg[0]; /* the entry's payload */
} __attribute__((__packed__));

/*
 * The userspace structure for version 4 of the logger_entry ABI.
 */
struct logger_entry_v4 {
  uint16_t len;      /* length of the payload */
  uint16_t hdr_size; /* sizeof(struct logger_entry_v4) */
  uint16_t hdr_size; /* sizeof(struct logger_entry) */
  int32_t pid;       /* generating process's pid */
  uint32_t tid;      /* generating process's tid */
  uint32_t sec;      /* seconds since Epoch */
@@ -124,11 +80,7 @@ struct logger_entry_v4 {
struct log_msg {
  union {
    unsigned char buf[LOGGER_ENTRY_MAX_LEN + 1];
    struct logger_entry_v4 entry;
    struct logger_entry_v4 entry_v4;
    struct logger_entry_v3 entry_v3;
    struct logger_entry_v2 entry_v2;
    struct logger_entry entry_v1;
    struct logger_entry entry;
  } __attribute__((aligned(4)));
#ifdef __cplusplus
  /* Matching log_time operators */
@@ -162,19 +114,12 @@ struct log_msg {
  }
  char* msg() {
    unsigned short hdr_size = entry.hdr_size;
    if (!hdr_size) {
      hdr_size = sizeof(entry_v1);
    }
    if ((hdr_size < sizeof(entry_v1)) || (hdr_size > sizeof(entry))) {
    if (hdr_size != sizeof(entry)) {
      return nullptr;
    }
    return reinterpret_cast<char*>(buf) + hdr_size;
  }
  unsigned int len() {
    return (entry.hdr_size ? entry.hdr_size
                           : static_cast<uint16_t>(sizeof(entry_v1))) +
           entry.len;
  }
  unsigned int len() { return entry.hdr_size + entry.len; }
#endif
};

+9 −17
Original line number Diff line number Diff line
@@ -273,34 +273,26 @@ static int android_transport_read(struct android_log_logger_list* logger_list,
                                  struct log_msg* log_msg) {
  int ret = (*transp->transport->read)(logger_list, transp, log_msg);

  if (ret < 0) {
    return ret;
  }

  if (ret > (int)sizeof(*log_msg)) {
    ret = sizeof(*log_msg);
  }

  transp->ret = ret;

  /* propagate errors, or make sure len & hdr_size members visible */
  if (ret < (int)(sizeof(log_msg->entry.len) + sizeof(log_msg->entry.hdr_size))) {
    if (ret >= (int)sizeof(log_msg->entry.len)) {
      log_msg->entry.len = 0;
    }
    return ret;
  if (ret < static_cast<int>(sizeof(log_msg->entry))) {
    return -EINVAL;
  }

  /* hdr_size correction (logger_entry -> logger_entry_v2+ conversion) */
  if (log_msg->entry_v2.hdr_size == 0) {
    log_msg->entry_v2.hdr_size = sizeof(struct logger_entry);
  }
  if ((log_msg->entry_v2.hdr_size < sizeof(log_msg->entry_v1)) ||
      (log_msg->entry_v2.hdr_size > sizeof(log_msg->entry))) {
  if (log_msg->entry.hdr_size != sizeof(log_msg->entry)) {
    return -EINVAL;
  }

  /* len validation */
  if (ret <= log_msg->entry_v2.hdr_size) {
    log_msg->entry.len = 0;
  } else {
    log_msg->entry.len = ret - log_msg->entry_v2.hdr_size;
  if (log_msg->entry.len > ret - log_msg->entry.hdr_size) {
    return -EINVAL;
  }

  return ret;
+12 −33
Original line number Diff line number Diff line
@@ -532,18 +532,12 @@ int android_log_processLogBuffer(struct logger_entry* buf, AndroidLogEntry* entr

  int i;
  char* msg = buf->msg;
  struct logger_entry_v2* buf2 = (struct logger_entry_v2*)buf;
  if (buf2->hdr_size) {
    if ((buf2->hdr_size < sizeof(((struct log_msg*)NULL)->entry_v1)) ||
        (buf2->hdr_size > sizeof(((struct log_msg*)NULL)->entry))) {
  if (buf->hdr_size != sizeof(struct logger_entry)) {
    fprintf(stderr, "+++ LOG: entry illegal hdr_size\n");
    return -1;
  }
    msg = ((char*)buf2) + buf2->hdr_size;
    if (buf2->hdr_size >= sizeof(struct logger_entry_v4)) {
      entry->uid = ((struct logger_entry_v4*)buf)->uid;
    }
  }
  entry->uid = buf->uid;

  for (i = 1; i < buf->len; i++) {
    if (msg[i] == '\0') {
      if (msgStart == -1) {
@@ -993,27 +987,15 @@ int android_log_processBinaryLogBuffer(
  entry->pid = buf->pid;
  entry->tid = buf->tid;

  /*
   * Pull the tag out, fill in some additional details based on incoming
   * buffer version (v3 adds lid, v4 adds uid).
   */
  eventData = (const unsigned char*)buf->msg;
  struct logger_entry_v2* buf2 = (struct logger_entry_v2*)buf;
  if (buf2->hdr_size) {
    if ((buf2->hdr_size < sizeof(((struct log_msg*)NULL)->entry_v1)) ||
        (buf2->hdr_size > sizeof(((struct log_msg*)NULL)->entry))) {
  if (buf->hdr_size != sizeof(struct logger_entry)) {
    fprintf(stderr, "+++ LOG: entry illegal hdr_size\n");
    return -1;
  }
    eventData = ((unsigned char*)buf2) + buf2->hdr_size;
    if ((buf2->hdr_size >= sizeof(struct logger_entry_v3)) &&
        (((struct logger_entry_v3*)buf)->lid == LOG_ID_SECURITY)) {
  if (buf->lid == LOG_ID_SECURITY) {
    entry->priority = ANDROID_LOG_WARN;
  }
    if (buf2->hdr_size >= sizeof(struct logger_entry_v4)) {
      entry->uid = ((struct logger_entry_v4*)buf)->uid;
    }
  }
  entry->uid = buf->uid;
  inCount = buf->len;
  if (inCount < sizeof(android_event_header_t)) return -1;
  auto* event_header = reinterpret_cast<const android_event_header_t*>(eventData);
@@ -1069,9 +1051,6 @@ int android_log_processBinaryLogBuffer(
  if ((result == 1) && fmtStr) {
    /* We overflowed :-(, let's repaint the line w/o format dressings */
    eventData = (const unsigned char*)buf->msg;
    if (buf2->hdr_size) {
      eventData = ((unsigned char*)buf2) + buf2->hdr_size;
    }
    eventData += 4;
    outBuf = messageBuf;
    outRemaining = messageBufLen - 1;
+14 −14
Original line number Diff line number Diff line
@@ -144,7 +144,7 @@ static int pmsgRead(struct android_log_logger_list* logger_list,
          ((logger_list->start.tv_sec != buf.l.realtime.tv_sec) ||
           (logger_list->start.tv_nsec <= buf.l.realtime.tv_nsec)))) &&
        (!logger_list->pid || (logger_list->pid == buf.p.pid))) {
      char* msg = log_msg->entry_v4.msg;
      char* msg = log_msg->entry.msg;
      *msg = buf.prio;
      fd = atomic_load(&transp->context.fd);
      if (fd <= 0) {
@@ -158,16 +158,16 @@ static int pmsgRead(struct android_log_logger_list* logger_list,
        return -EIO;
      }

      log_msg->entry_v4.len = buf.p.len - sizeof(buf) + sizeof(buf.prio);
      log_msg->entry_v4.hdr_size = sizeof(log_msg->entry_v4);
      log_msg->entry_v4.pid = buf.p.pid;
      log_msg->entry_v4.tid = buf.l.tid;
      log_msg->entry_v4.sec = buf.l.realtime.tv_sec;
      log_msg->entry_v4.nsec = buf.l.realtime.tv_nsec;
      log_msg->entry_v4.lid = buf.l.id;
      log_msg->entry_v4.uid = buf.p.uid;
      log_msg->entry.len = buf.p.len - sizeof(buf) + sizeof(buf.prio);
      log_msg->entry.hdr_size = sizeof(log_msg->entry);
      log_msg->entry.pid = buf.p.pid;
      log_msg->entry.tid = buf.l.tid;
      log_msg->entry.sec = buf.l.realtime.tv_sec;
      log_msg->entry.nsec = buf.l.realtime.tv_nsec;
      log_msg->entry.lid = buf.l.id;
      log_msg->entry.uid = buf.p.uid;

      return ret + sizeof(buf.prio) + log_msg->entry_v4.hdr_size;
      return ret + sizeof(buf.prio) + log_msg->entry.hdr_size;
    }

    fd = atomic_load(&transp->context.fd);
@@ -215,7 +215,7 @@ ssize_t __android_log_pmsg_file_read(log_id_t logId, char prio, const char* pref
  struct android_log_transport_context transp;
  struct content {
    struct listnode node;
    struct logger_entry_v4 entry;
    struct logger_entry entry;
  } * content;
  struct names {
    struct listnode node;
@@ -269,12 +269,12 @@ ssize_t __android_log_pmsg_file_read(log_id_t logId, char prio, const char* pref
  /* Read the file content */
  while (pmsgRead(&logger_list, &transp, &transp.logMsg) > 0) {
    const char* cp;
    size_t hdr_size = transp.logMsg.entry.hdr_size ? transp.logMsg.entry.hdr_size
                                                   : sizeof(transp.logMsg.entry_v1);
    size_t hdr_size = transp.logMsg.entry.hdr_size;

    char* msg = (char*)&transp.logMsg + hdr_size;
    const char* split = NULL;

    if ((hdr_size < sizeof(transp.logMsg.entry_v1)) || (hdr_size > sizeof(transp.logMsg.entry))) {
    if (hdr_size != sizeof(transp.logMsg.entry)) {
      continue;
    }
    /* Check for invalid sequence number */
Loading