summaryrefslogtreecommitdiffstats
path: root/logd/main.cpp
diff options
context:
space:
mode:
authorMark Salyzyn <salyzyn@google.com>2015-09-30 20:04:53 +0000
committerAndroid Git Automerger <android-git-automerger@android.com>2015-09-30 20:04:53 +0000
commit900362c36eb531c88d37d8fa57b66c45ed165122 (patch)
tree8b3756b03e404ae9de353aed3eeab0d3ead9ed18 /logd/main.cpp
parent049399e570e8aba9ffd83ac88bde0d037e810038 (diff)
parent1b2fb587eb7db6f9de1dda8663b33d87a2f5a27e (diff)
downloadsystem_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.cpp21
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);
}
}
}