From d545d2930e042b9ff7fbbda52fea0da047148b26 Mon Sep 17 00:00:00 2001 From: Rubin Xu Date: Sun, 10 Jan 2016 22:31:19 +0000 Subject: [PATCH] Add logd security buffer tag types and string write API. Bug: 22860162 Change-Id: I1cceed3462eaebdd8208abf101b127f27f0023a7 --- include/log/logd.h | 1 + liblog/logd_write.c | 22 ++++++++++++++++++++++ 2 files changed, 23 insertions(+) diff --git a/include/log/logd.h b/include/log/logd.h index b7aedaff6..b27160253 100644 --- a/include/log/logd.h +++ b/include/log/logd.h @@ -45,6 +45,7 @@ int __android_log_btwrite(int32_t tag, char type, const void *payload, int __android_log_bswrite(int32_t tag, const char *payload); int __android_log_security_bwrite(int32_t tag, const void *payload, size_t len); +int __android_log_security_bswrite(int32_t tag, const char *payload); #ifdef __cplusplus } diff --git a/liblog/logd_write.c b/liblog/logd_write.c index 5406c50e1..55b965b91 100644 --- a/liblog/logd_write.c +++ b/liblog/logd_write.c @@ -668,3 +668,25 @@ int __android_log_bswrite(int32_t tag, const char *payload) return write_to_log(LOG_ID_EVENTS, vec, 4); } + +/* + * Like __android_log_security_bwrite, but used for writing strings to the + * security log. + */ +int __android_log_security_bswrite(int32_t tag, const char *payload) +{ + struct iovec vec[4]; + char type = EVENT_TYPE_STRING; + uint32_t len = strlen(payload); + + vec[0].iov_base = &tag; + vec[0].iov_len = sizeof(tag); + vec[1].iov_base = &type; + vec[1].iov_len = sizeof(type); + vec[2].iov_base = &len; + vec[2].iov_len = sizeof(len); + vec[3].iov_base = (void*)payload; + vec[3].iov_len = len; + + return write_to_log(LOG_ID_SECURITY, vec, 4); +}