Add checking for log entry format
The log tag may be zero length if corrupted, so check for this condition. Change-Id: I7616226dabe78a85859b0ab53aca08f734dbdd84
This commit is contained in:
parent
e5de9ee491
commit
4bf3c02e02
|
@ -350,16 +350,28 @@ static inline char * strip_end(char *str)
|
|||
int android_log_processLogBuffer(struct logger_entry *buf,
|
||||
AndroidLogEntry *entry)
|
||||
{
|
||||
size_t tag_len;
|
||||
|
||||
entry->tv_sec = buf->sec;
|
||||
entry->tv_nsec = buf->nsec;
|
||||
entry->priority = buf->msg[0];
|
||||
entry->pid = buf->pid;
|
||||
entry->tid = buf->tid;
|
||||
|
||||
/*
|
||||
* format: <priority:1><tag:N>\0<message:N>\0
|
||||
*
|
||||
* tag str
|
||||
* starts at msg+1
|
||||
* msg
|
||||
* starts at msg+1+len(tag)+1
|
||||
*/
|
||||
entry->tag = buf->msg + 1;
|
||||
tag_len = strlen(entry->tag);
|
||||
entry->messageLen = buf->len - tag_len - 3;
|
||||
const size_t tag_len = strlen(entry->tag);
|
||||
const size_t preambleAndNullLen = tag_len + 3;
|
||||
if (buf->len <= preambleAndNullLen) {
|
||||
fprintf(stderr, "+++ LOG: entry corrupt or truncated\n");
|
||||
return -1;
|
||||
}
|
||||
entry->messageLen = buf->len - preambleAndNullLen;
|
||||
entry->message = entry->tag + tag_len + 1;
|
||||
|
||||
return 0;
|
||||
|
|
|
@ -323,7 +323,7 @@ static void readLogLines(log_device_t* devices)
|
|||
|
||||
// the caller requested to just dump the log and exit
|
||||
if (g_nonblock) {
|
||||
exit(0);
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
// print all that aren't the last in their list
|
||||
|
@ -765,10 +765,10 @@ int main(int argc, char **argv)
|
|||
}
|
||||
|
||||
if (getLogSize) {
|
||||
return 0;
|
||||
exit(0);
|
||||
}
|
||||
if (clearLog) {
|
||||
return 0;
|
||||
exit(0);
|
||||
}
|
||||
|
||||
//LOG_EVENT_INT(10, 12345);
|
||||
|
|
Loading…
Reference in New Issue