From 22e287df0dfbc6e10c02f570d2fc0c42a2a6b7aa Mon Sep 17 00:00:00 2001 From: Mark Salyzyn Date: Fri, 21 Mar 2014 13:12:16 -0700 Subject: [PATCH] logcat: white and blacklist failure - logcat improperly squashes out count - logcat test enhanced to catch failure - logd places entries in ascending sorted order Change-Id: If39d8e2c40852b520c98e7840034ab63c2538e5d --- logcat/logcat.cpp | 5 ++++- logcat/tests/logcat_test.cpp | 12 +++++++++++- logd/LogListener.cpp | 4 +++- logd/LogWhiteBlackList.cpp | 4 ++-- 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/logcat/logcat.cpp b/logcat/logcat.cpp index 596060973..5a80efe1f 100644 --- a/logcat/logcat.cpp +++ b/logcat/logcat.cpp @@ -807,7 +807,10 @@ int main(int argc, char **argv) // squash out the byte count cp = buf; if (!truncated) { - while (isdigit(*cp) || (*cp == '\n')) { + while (isdigit(*cp)) { + ++cp; + } + if (*cp == '\n') { ++cp; } } diff --git a/logcat/tests/logcat_test.cpp b/logcat/tests/logcat_test.cpp index 818a9780f..0c7569505 100644 --- a/logcat/tests/logcat_test.cpp +++ b/logcat/tests/logcat_test.cpp @@ -601,7 +601,7 @@ TEST(logcat, white_black_adjust) { ASSERT_EQ(true, get_white_black(&list)); - static const char adjustment[] = "~! ~1000"; + static const char adjustment[] = "~! 300/20 300/25 2000 ~1000/5 ~1000/30"; ASSERT_EQ(true, set_white_black(adjustment)); ASSERT_EQ(true, get_white_black(&adjust)); if (strcmp(adjustment, adjust)) { @@ -611,6 +611,16 @@ TEST(logcat, white_black_adjust) { free(adjust); adjust = NULL; + static const char adjustment2[] = "300/20 300/21 2000 ~1000"; + ASSERT_EQ(true, set_white_black(adjustment2)); + ASSERT_EQ(true, get_white_black(&adjust)); + if (strcmp(adjustment2, adjust)) { + fprintf(stderr, "ERROR: '%s' != '%s'\n", adjustment2, adjust); + } + ASSERT_STREQ(adjustment2, adjust); + free(adjust); + adjust = NULL; + ASSERT_EQ(true, set_white_black(list)); ASSERT_EQ(true, get_white_black(&adjust)); if (strcmp(list, adjust)) { diff --git a/logd/LogListener.cpp b/logd/LogListener.cpp index bef2097da..874302ac9 100644 --- a/logd/LogListener.cpp +++ b/logd/LogListener.cpp @@ -95,7 +95,9 @@ bool LogListener::onDataAvailable(SocketClient *cli) { msg += sizeof(log_time); n -= sizeof(log_time); - unsigned short len = n; + // NB: hdr.msg_flags & MSG_TRUNC is not tested, silently passing a + // truncated message to the logs. + unsigned short len = n; // cap to internal maximum if (len == n) { logbuf->log(log_id, realtime, cred->uid, cred->pid, tid, msg, len); reader->notifyNewLog(); diff --git a/logd/LogWhiteBlackList.cpp b/logd/LogWhiteBlackList.cpp index d0ceb9fca..5f8173f6a 100644 --- a/logd/LogWhiteBlackList.cpp +++ b/logd/LogWhiteBlackList.cpp @@ -154,8 +154,8 @@ int PruneList::init(char *str) { } m = pid - p->mPid; } - if (m >= 0) { - if (m > 0) { + if (m <= 0) { + if (m < 0) { list->insert(it, new Prune(uid,pid)); } break;