summaryrefslogtreecommitdiffstats
path: root/logd/LogAudit.cpp
diff options
context:
space:
mode:
authorMark Salyzyn <salyzyn@google.com>2015-03-03 16:21:27 -0800
committerMark Salyzyn <salyzyn@google.com>2015-03-04 13:21:41 -0800
commit29eb57066c37bf667a56bb4a7143b50664d5eb44 (patch)
treeaf2101fdf3c2037ad9625f50b029b3a994b84bf5 /logd/LogAudit.cpp
parent4487c605eaeea2b85c8511fe915a286c3aaf4da4 (diff)
downloadsystem_core-29eb57066c37bf667a56bb4a7143b50664d5eb44.zip
system_core-29eb57066c37bf667a56bb4a7143b50664d5eb44.tar.gz
system_core-29eb57066c37bf667a56bb4a7143b50664d5eb44.tar.bz2
logd: use <endian.h>
Change-Id: Iba843c054ea4fbe1a26c7821b5613fdb5e8001a1
Diffstat (limited to 'logd/LogAudit.cpp')
-rw-r--r--logd/LogAudit.cpp33
1 files changed, 15 insertions, 18 deletions
diff --git a/logd/LogAudit.cpp b/logd/LogAudit.cpp
index c7c0249..af0b775 100644
--- a/logd/LogAudit.cpp
+++ b/logd/LogAudit.cpp
@@ -15,6 +15,7 @@
*/
#include <ctype.h>
+#include <endian.h>
#include <errno.h>
#include <limits.h>
#include <stdarg.h>
@@ -23,6 +24,8 @@
#include <sys/uio.h>
#include <syslog.h>
+#include <private/android_logger.h>
+
#include "libaudit.h"
#include "LogAudit.h"
@@ -138,29 +141,23 @@ int LogAudit::logPrint(const char *fmt, ...) {
// log to events
size_t l = strlen(str);
- size_t n = l + sizeof(uint32_t) + sizeof(uint8_t) + sizeof(uint32_t);
+ size_t n = l + sizeof(android_log_event_string_t);
bool notify = false;
- char *newstr = reinterpret_cast<char *>(malloc(n));
- if (!newstr) {
+ android_log_event_string_t *event = static_cast<android_log_event_string_t *>(malloc(n));
+ if (!event) {
rc = -ENOMEM;
} else {
- cp = newstr;
- *cp++ = AUDITD_LOG_TAG & 0xFF;
- *cp++ = (AUDITD_LOG_TAG >> 8) & 0xFF;
- *cp++ = (AUDITD_LOG_TAG >> 16) & 0xFF;
- *cp++ = (AUDITD_LOG_TAG >> 24) & 0xFF;
- *cp++ = EVENT_TYPE_STRING;
- *cp++ = l & 0xFF;
- *cp++ = (l >> 8) & 0xFF;
- *cp++ = (l >> 16) & 0xFF;
- *cp++ = (l >> 24) & 0xFF;
- memcpy(cp, str, l);
-
- logbuf->log(LOG_ID_EVENTS, now, uid, pid, tid, newstr,
+ event->header.tag = htole32(AUDITD_LOG_TAG);
+ event->payload.type = EVENT_TYPE_STRING;
+ event->payload.length = htole32(l);
+ memcpy(event->payload.data, str, l);
+
+ logbuf->log(LOG_ID_EVENTS, now, uid, pid, tid,
+ reinterpret_cast<char *>(event),
(n <= USHRT_MAX) ? (unsigned short) n : USHRT_MAX);
- free(newstr);
+ free(event);
notify = true;
}
@@ -190,7 +187,7 @@ int LogAudit::logPrint(const char *fmt, ...) {
}
n = (estr - str) + strlen(ecomm) + l + 2;
- newstr = reinterpret_cast<char *>(malloc(n));
+ char *newstr = static_cast<char *>(malloc(n));
if (!newstr) {
rc = -ENOMEM;
} else {