Merge "liblog: accept log messages with hdr_size greater than known headers"
diff --git a/liblog/include/log/log_read.h b/liblog/include/log/log_read.h
index ee3b250..6601072 100644
--- a/liblog/include/log/log_read.h
+++ b/liblog/include/log/log_read.h
@@ -114,7 +114,7 @@
}
char* msg() {
unsigned short hdr_size = entry.hdr_size;
- if (hdr_size != sizeof(entry)) {
+ if (hdr_size >= sizeof(struct log_msg) - sizeof(entry)) {
return nullptr;
}
return reinterpret_cast<char*>(buf) + hdr_size;
diff --git a/liblog/logger_read.cpp b/liblog/logger_read.cpp
index c65501c..0d383ff 100644
--- a/liblog/logger_read.cpp
+++ b/liblog/logger_read.cpp
@@ -120,7 +120,8 @@
return -EINVAL;
}
- if (log_msg->entry.hdr_size != sizeof(log_msg->entry)) {
+ if (log_msg->entry.hdr_size < sizeof(log_msg->entry) ||
+ log_msg->entry.hdr_size >= sizeof(struct log_msg) - sizeof(log_msg->entry)) {
return -EINVAL;
}