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

Commit 8646a54e authored by Mark Salyzyn's avatar Mark Salyzyn
Browse files

liblog: readlog apps get logger_entry_v4 for pstore

Adds the uid field to outgoing content for readlog applications.
AID_LOG, AID_ROOT and AID_SYSTEM gain access to the information.

Bug: 25996918
Change-Id: Ib124eca12c004cdd6e57b98e0aae6ddced385cf6
parent 7b87365e
Loading
Loading
Loading
Loading
+18 −9
Original line number Diff line number Diff line
@@ -634,6 +634,7 @@ static int android_logger_list_read_pstore(struct logger_list *logger_list,
        android_log_header_t l;
    } buf;
    static uint8_t preread_count;
    bool is_system;

    memset(log_msg, 0, sizeof(*log_msg));

@@ -690,11 +691,14 @@ static int android_logger_list_read_pstore(struct logger_list *logger_list,
            }

            uid = get_best_effective_uid();
            if (!uid_has_log_permission(uid) && (uid != buf.p.uid)) {
            is_system = uid_has_log_permission(uid);
            if (!is_system && (uid != buf.p.uid)) {
                break;
            }

            ret = TEMP_FAILURE_RETRY(read(logger_list->sock,
                                          is_system ?
                                              log_msg->entry_v4.msg :
                                              log_msg->entry_v3.msg,
                                          buf.p.len - sizeof(buf)));
            if (ret < 0) {
@@ -704,13 +708,18 @@ static int android_logger_list_read_pstore(struct logger_list *logger_list,
                return -EIO;
            }

            log_msg->entry_v3.len = buf.p.len - sizeof(buf);
            log_msg->entry_v3.hdr_size = sizeof(log_msg->entry_v3);
            log_msg->entry_v3.pid = buf.p.pid;
            log_msg->entry_v3.tid = buf.l.tid;
            log_msg->entry_v3.sec = buf.l.realtime.tv_sec;
            log_msg->entry_v3.nsec = buf.l.realtime.tv_nsec;
            log_msg->entry_v3.lid = buf.l.id;
            log_msg->entry_v4.len = buf.p.len - sizeof(buf);
            log_msg->entry_v4.hdr_size = is_system ?
                sizeof(log_msg->entry_v4) :
                sizeof(log_msg->entry_v3);
            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;
            if (is_system) {
                log_msg->entry_v4.uid = buf.p.uid;
            }

            return ret;
        }