Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 5fc47aae authored by Nick Kralevich's avatar Nick Kralevich Committed by Gerrit Code Review
Browse files

Merge "logd: Don't embed a flexible array member within another struct"

parents 02f1d80a 58ba58a9
Loading
Loading
Loading
Loading
+14 −2
Original line number Diff line number Diff line
@@ -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
@@ -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
+3 −3
Original line number Diff line number Diff line
@@ -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),