summaryrefslogtreecommitdiffstats
path: root/liblog
diff options
context:
space:
mode:
authorMark Salyzyn <salyzyn@google.com>2015-12-07 08:45:12 -0800
committerMark Salyzyn <salyzyn@google.com>2015-12-09 08:12:07 -0800
commit8646a54ece681fc805dec5a12b8f238147a7cb4b (patch)
treeeeb9c7b187a5d63a3381b0c2d4f499af3ea4bb7c /liblog
parent7b87365ecf8c08307173537645b85708f59aab78 (diff)
downloadsystem_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.c27
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;
}