Loading include/private/android_logger.h +14 −2 Original line number Diff line number Diff line Loading @@ -70,7 +70,17 @@ typedef struct __attribute__((__packed__)) { android_event_long_t payload; } android_log_event_long_t; /* Event payload EVENT_TYPE_STRING */ /* * Event payload EVENT_TYPE_STRING * * Danger: do not embed this structure into another structure. * This structure uses a flexible array member, and when * compiled using g++, __builtin_object_size(data, 1) returns * a bad value. This is possibly a g++ bug, or a bug due to * the fact that flexible array members are not supported * in C++. * http://stackoverflow.com/questions/4412749/are-flexible-array-members-valid-in-c */ typedef struct __attribute__((__packed__)) { int8_t type; // EVENT_TYPE_STRING; int32_t length; // Little Endian Order Loading @@ -80,7 +90,9 @@ typedef struct __attribute__((__packed__)) { /* Event with single EVENT_TYPE_STRING */ typedef struct __attribute__((__packed__)) { android_event_header_t header; android_event_string_t payload; int8_t type; // EVENT_TYPE_STRING; int32_t length; // Little Endian Order char data[]; } android_log_event_string_t; #endif logd/LogAudit.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -150,9 +150,9 @@ int LogAudit::logPrint(const char *fmt, ...) { rc = -ENOMEM; } else { event->header.tag = htole32(AUDITD_LOG_TAG); event->payload.type = EVENT_TYPE_STRING; event->payload.length = htole32(l); memcpy(event->payload.data, str, l); event->type = EVENT_TYPE_STRING; event->length = htole32(l); memcpy(event->data, str, l); logbuf->log(LOG_ID_EVENTS, now, uid, pid, tid, reinterpret_cast<char *>(event), Loading Loading
include/private/android_logger.h +14 −2 Original line number Diff line number Diff line Loading @@ -70,7 +70,17 @@ typedef struct __attribute__((__packed__)) { android_event_long_t payload; } android_log_event_long_t; /* Event payload EVENT_TYPE_STRING */ /* * Event payload EVENT_TYPE_STRING * * Danger: do not embed this structure into another structure. * This structure uses a flexible array member, and when * compiled using g++, __builtin_object_size(data, 1) returns * a bad value. This is possibly a g++ bug, or a bug due to * the fact that flexible array members are not supported * in C++. * http://stackoverflow.com/questions/4412749/are-flexible-array-members-valid-in-c */ typedef struct __attribute__((__packed__)) { int8_t type; // EVENT_TYPE_STRING; int32_t length; // Little Endian Order Loading @@ -80,7 +90,9 @@ typedef struct __attribute__((__packed__)) { /* Event with single EVENT_TYPE_STRING */ typedef struct __attribute__((__packed__)) { android_event_header_t header; android_event_string_t payload; int8_t type; // EVENT_TYPE_STRING; int32_t length; // Little Endian Order char data[]; } android_log_event_string_t; #endif
logd/LogAudit.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -150,9 +150,9 @@ int LogAudit::logPrint(const char *fmt, ...) { rc = -ENOMEM; } else { event->header.tag = htole32(AUDITD_LOG_TAG); event->payload.type = EVENT_TYPE_STRING; event->payload.length = htole32(l); memcpy(event->payload.data, str, l); event->type = EVENT_TYPE_STRING; event->length = htole32(l); memcpy(event->data, str, l); logbuf->log(LOG_ID_EVENTS, now, uid, pid, tid, reinterpret_cast<char *>(event), Loading