diff options
author | Mark Salyzyn <salyzyn@google.com> | 2015-12-07 08:45:12 -0800 |
---|---|---|
committer | Mark Salyzyn <salyzyn@google.com> | 2015-12-09 08:12:07 -0800 |
commit | 8646a54ece681fc805dec5a12b8f238147a7cb4b (patch) | |
tree | eeb9c7b187a5d63a3381b0c2d4f499af3ea4bb7c /liblog | |
parent | 7b87365ecf8c08307173537645b85708f59aab78 (diff) | |
download | system_core-8646a54ece681fc805dec5a12b8f238147a7cb4b.tar.gz system_core-8646a54ece681fc805dec5a12b8f238147a7cb4b.tar.bz2 system_core-8646a54ece681fc805dec5a12b8f238147a7cb4b.zip |
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
Diffstat (limited to 'liblog')
-rw-r--r-- | liblog/log_read.c | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/liblog/log_read.c b/liblog/log_read.c index fb8675779..4503219d3 100644 --- a/liblog/log_read.c +++ b/liblog/log_read.c @@ -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,12 +691,15 @@ 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, - log_msg->entry_v3.msg, + is_system ? + log_msg->entry_v4.msg : + log_msg->entry_v3.msg, buf.p.len - sizeof(buf))); if (ret < 0) { return -errno; @@ -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; } |