Fix SIGBUS in pipe backend 19/228019/3
authorSemun Lee <semun.lee@samsung.com>
Wed, 18 Mar 2020 06:46:45 +0000 (15:46 +0900)
committerSemun Lee <semun.lee@samsung.com>
Wed, 18 Mar 2020 11:16:25 +0000 (20:16 +0900)
make log entry to be aligned by 4

Change-Id: Ibe17b0f7e99dfcdf823b4dc8d328f4c65b4c436a
Signed-off-by: Semun Lee <semun.lee@samsung.com>
src/shared/queued_entry.c
src/tests/queued_entry.c

index 99a60cf..6260ebe 100644 (file)
@@ -238,10 +238,12 @@ int parse_kmsg_message(char *buffer, struct dlogutil_entry_with_msg *lem, int bu
                /* ignore for now */ \
        } \
        payload_size--; /* there's priority at first byte which is not a part of a message */ \
-       le->len = sizeof *le + payload_size; \
        le->pid = xle->pid; \
        le->tid = xle->tid; \
+       le->len = sizeof *le + payload_size; \
+       le->len = (le->len + 3) & ~0x03; \
        memmove(le->msg, xle->msg + 1, payload_size); \
+       memset(le->msg + payload_size, 0, le->len - payload_size); \
 }
 
 #ifdef USE_ANDROID_MONOTONIC
index 6af04d5..43afb5b 100644 (file)
@@ -162,7 +162,9 @@ int main()
 
        parse_androidlogger_message(ale, &lewm.header, added_len + sizeof *ale);
 
-       assert(lewm.header.len == sizeof lewm.header + added_len - 1);
+       int padded_len = sizeof lewm.header + added_len - 1;
+       padded_len = (padded_len + 3) & ~0x03;
+       assert(lewm.header.len == padded_len);
        assert(lewm.header.priority == DLOG_ERROR);
        assert(lewm.header.pid == 13);
        assert(lewm.header.tid == 21);