summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Salyzyn2016-08-18 16:59:41 -0500
committerMark Salyzyn2016-08-23 16:51:50 -0500
commit305374cf0f8cf28b58a108cf4f45df92fc0dde86 (patch)
tree4f7ae56a180ae568508f5da1f4f83e25a054d712 /logd/tests
parent82b67fff06363c8e7a17058cb5ce748f21a27f11 (diff)
downloadplatform-system-core-305374cf0f8cf28b58a108cf4f45df92fc0dde86.tar.gz
platform-system-core-305374cf0f8cf28b58a108cf4f45df92fc0dde86.tar.xz
platform-system-core-305374cf0f8cf28b58a108cf4f45df92fc0dde86.zip
logger: validate hdr_size field in logger entry
- check hdr_size to make sure it is in the expected range from sizeof entry_v1 to entry (entry_v4). - alter msg() method to report NULL on invalid hdr_size - alter all users of msg() method. Bug: 30947841 Change-Id: I9bc1740d7aa9f37df5be966c18de1fb9de63d5dd
Diffstat (limited to 'logd/tests')
-rw-r--r--logd/tests/logd_test.cpp15
1 files changed, 13 insertions, 2 deletions
diff --git a/logd/tests/logd_test.cpp b/logd/tests/logd_test.cpp
index 2014374e7..301ede92b 100644
--- a/logd/tests/logd_test.cpp
+++ b/logd/tests/logd_test.cpp
@@ -213,9 +213,15 @@ static void dump_log_msg(const char *prefix,
213 version = 1; 213 version = 1;
214 break; 214 break;
215 215
216 case sizeof(msg->entry_v2): 216 case sizeof(msg->entry_v2): /* PLUS case sizeof(msg->entry_v3): */
217 if (version == 0) { 217 if (version == 0) {
218 version = 2; 218 version = (msg->entry_v3.lid < LOG_ID_MAX) ? 3 : 2;
219 }
220 break;
221
222 case sizeof(msg->entry_v4):
223 if (version == 0) {
224 version = 4;
219 } 225 }
220 break; 226 break;
221 } 227 }
@@ -269,6 +275,11 @@ static void dump_log_msg(const char *prefix,
269 unsigned int len = msg->entry.len; 275 unsigned int len = msg->entry.len;
270 fprintf(stderr, "msg[%u]={", len); 276 fprintf(stderr, "msg[%u]={", len);
271 unsigned char *cp = reinterpret_cast<unsigned char *>(msg->msg()); 277 unsigned char *cp = reinterpret_cast<unsigned char *>(msg->msg());
278 if (!cp) {
279 static const unsigned char garbage[] = "<INVALID>";
280 cp = const_cast<unsigned char *>(garbage);
281 len = strlen(reinterpret_cast<const char *>(garbage));
282 }
272 while(len) { 283 while(len) {
273 unsigned char *p = cp; 284 unsigned char *p = cp;
274 while (*p && (((' ' <= *p) && (*p < 0x7F)) || (*p == '\n'))) { 285 while (*p && (((' ' <= *p) && (*p < 0x7F)) || (*p == '\n'))) {