shared: fix wrong payload size when parsing android logger message 65/176765/2
authorMaciej Slodczyk <m.slodczyk2@partner.samsung.com>
Mon, 23 Apr 2018 09:09:28 +0000 (11:09 +0200)
committerMichal Bloch <m.bloch@samsung.com>
Mon, 23 Apr 2018 11:42:50 +0000 (11:42 +0000)
There's priority in the first byte of payload which was stripped
off but the payload size was not correctly adjusted to take this
fact into account. Now the size is calculated correctly.

Change-Id: I66227d65ca7198190419df92da8a59b9099db091

src/shared/queued_entry.c

index 44dc70a..613eb99 100644 (file)
@@ -155,7 +155,7 @@ int parse_kmsg_message(char *buffer, struct logger_entry_with_msg *lem, int buff
  */
 void parse_androidlogger_message(struct android_logger_entry *ale, struct logger_entry *le, size_t dgram_size)
 {
-       const size_t payload_size = dgram_size - sizeof *ale;
+       size_t payload_size = dgram_size - sizeof *ale;
        assert(payload_size <= LOG_MAX_PAYLOAD_SIZE);
 
        le->tag_len = -1;
@@ -170,13 +170,13 @@ void parse_androidlogger_message(struct android_logger_entry *ale, struct logger
        if (le->tag_len == -1)
                ; // 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 = ale->pid;
        le->tid = ale->tid;
        le->sec = ale->sec_sent;
        le->nsec = ale->nsec_sent;
-       memmove(le->msg, ale->msg + 1, payload_size - 1);
+       memmove(le->msg, ale->msg + 1, payload_size);
 }
 
 void parse_pipe_message(struct pipe_logger_entry *ple, struct logger_entry *le, size_t msg_size)