replace inplace android log entry parsing 29/170129/7
authorMaciej Slodczyk <m.slodczyk2@partner.samsung.com>
Tue, 13 Feb 2018 12:25:15 +0000 (13:25 +0100)
committerMaciej Slodczyk <m.slodczyk2@partner.samsung.com>
Thu, 22 Feb 2018 10:25:30 +0000 (11:25 +0100)
android_logger_entry was parsed to logger_entry inplace
and caused problems when the latter was extended. Allocate
separate memory for each other so that they don't overlap.

Change-Id: I9ec9c47b9709e3a1c5a6deba5da97a91be6492db
Signed-off-by: Maciej Slodczyk <m.slodczyk2@partner.samsung.com>
src/logger/logger.c

index 85ecb60..8911166 100755 (executable)
@@ -991,6 +991,7 @@ static int service_reader_file(struct logger * server, struct reader* reader)
        assert(reader);
 
        static char buffer[LOG_MAX_SIZE + 1];
+       struct logger_entry_with_msg entry;
        buffer[sizeof buffer - 1] = '\0';
 
        /* The devices for both KMSG and Android Logger only return one log per read().
@@ -1013,11 +1014,10 @@ static int service_reader_file(struct logger * server, struct reader* reader)
                                return -errno;
                } else {
                        buffer[r] = '\0';
-                       struct logger_entry * const entry = (struct logger_entry *) buffer;
-                       parse_androidlogger_message((struct android_logger_entry *) buffer, entry, r);
-                       add_recv_timestamp(entry);
+                       parse_androidlogger_message((struct android_logger_entry *) buffer, &entry.header, r);
+                       add_recv_timestamp(&entry.header);
 
-                       logfile_write_with_rotation((struct logger_entry *)buffer, &reader->file);
+                       logfile_write_with_rotation(&entry.header, &reader->file);
                }
        }