diff options
author | Mark Salyzyn <salyzyn@google.com> | 2015-09-30 20:04:53 +0000 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2015-09-30 20:04:53 +0000 |
commit | 900362c36eb531c88d37d8fa57b66c45ed165122 (patch) | |
tree | 8b3756b03e404ae9de353aed3eeab0d3ead9ed18 /logd/main.cpp | |
parent | 049399e570e8aba9ffd83ac88bde0d037e810038 (diff) | |
parent | 1b2fb587eb7db6f9de1dda8663b33d87a2f5a27e (diff) | |
download | system_core-900362c36eb531c88d37d8fa57b66c45ed165122.tar.gz system_core-900362c36eb531c88d37d8fa57b66c45ed165122.tar.bz2 system_core-900362c36eb531c88d37d8fa57b66c45ed165122.zip |
am 1b2fb587: Merge changes I42162365,Ia72f1305,I57d1f86c,I026d074e
* commit '1b2fb587eb7db6f9de1dda8663b33d87a2f5a27e':
logd: klogd deal with nuls in dmesg
logd: log_strtok_r deal with nuls
liblog: logprint: printable nul
logd: klogd: sniff for time correction on Mediatek
Diffstat (limited to 'logd/main.cpp')
-rw-r--r-- | logd/main.cpp | 21 |
1 files changed, 11 insertions, 10 deletions
diff --git a/logd/main.cpp b/logd/main.cpp index 59a4235ad..d22a7aaae 100644 --- a/logd/main.cpp +++ b/logd/main.cpp @@ -286,36 +286,37 @@ static void readDmesg(LogAudit *al, LogKlog *kl) { return; } - int len = klogctl(KLOG_SIZE_BUFFER, NULL, 0); - if (len <= 0) { + int rc = klogctl(KLOG_SIZE_BUFFER, NULL, 0); + if (rc <= 0) { return; } - len += 1024; // Margin for additional input race or trailing nul + size_t len = rc + 1024; // Margin for additional input race or trailing nul std::unique_ptr<char []> buf(new char[len]); - int rc = klogctl(KLOG_READ_ALL, buf.get(), len); + rc = klogctl(KLOG_READ_ALL, buf.get(), len); if (rc <= 0) { return; } - if (rc < len) { + if ((size_t)rc < len) { len = rc + 1; } - buf[len - 1] = '\0'; + buf[--len] = '\0'; if (kl) { - kl->synchronize(buf.get()); + kl->synchronize(buf.get(), len); } + size_t sublen; for (char *ptr = NULL, *tok = buf.get(); - (rc >= 0) && ((tok = log_strtok_r(tok, &ptr))); + (rc >= 0) && ((tok = log_strntok_r(tok, &len, &ptr, &sublen))); tok = NULL) { if (al) { - rc = al->log(tok); + rc = al->log(tok, sublen); } if (kl) { - rc = kl->log(tok); + rc = kl->log(tok, sublen); } } } |