Merge "logd: propagate ::log status"
This commit is contained in:
commit
bb643ccb5d
|
@ -155,12 +155,14 @@ int LogAudit::logPrint(const char *fmt, ...) {
|
|||
event->length = htole32(l);
|
||||
memcpy(event->data, str, l);
|
||||
|
||||
logbuf->log(LOG_ID_EVENTS, now, uid, pid, tid,
|
||||
reinterpret_cast<char *>(event),
|
||||
(n <= USHRT_MAX) ? (unsigned short) n : USHRT_MAX);
|
||||
rc = logbuf->log(LOG_ID_EVENTS, now, uid, pid, tid,
|
||||
reinterpret_cast<char *>(event),
|
||||
(n <= USHRT_MAX) ? (unsigned short) n : USHRT_MAX);
|
||||
free(event);
|
||||
|
||||
notify = true;
|
||||
if (rc >= 0) {
|
||||
notify = true;
|
||||
}
|
||||
}
|
||||
|
||||
// log to main
|
||||
|
@ -197,17 +199,22 @@ int LogAudit::logPrint(const char *fmt, ...) {
|
|||
strncpy(newstr + 1 + l, str, estr - str);
|
||||
strcpy(newstr + 1 + l + (estr - str), ecomm);
|
||||
|
||||
logbuf->log(LOG_ID_MAIN, now, uid, pid, tid, newstr,
|
||||
(n <= USHRT_MAX) ? (unsigned short) n : USHRT_MAX);
|
||||
rc = logbuf->log(LOG_ID_MAIN, now, uid, pid, tid, newstr,
|
||||
(n <= USHRT_MAX) ? (unsigned short) n : USHRT_MAX);
|
||||
free(newstr);
|
||||
|
||||
notify = true;
|
||||
if (rc >= 0) {
|
||||
notify = true;
|
||||
}
|
||||
}
|
||||
|
||||
free(str);
|
||||
|
||||
if (notify) {
|
||||
reader->notifyNewLog();
|
||||
if (rc < 0) {
|
||||
rc = n;
|
||||
}
|
||||
}
|
||||
|
||||
return rc;
|
||||
|
@ -216,7 +223,7 @@ int LogAudit::logPrint(const char *fmt, ...) {
|
|||
int LogAudit::log(char *buf) {
|
||||
char *audit = strstr(buf, " audit(");
|
||||
if (!audit) {
|
||||
return 0;
|
||||
return -EXDEV;
|
||||
}
|
||||
|
||||
*audit = '\0';
|
||||
|
|
|
@ -15,6 +15,7 @@
|
|||
*/
|
||||
|
||||
#include <ctype.h>
|
||||
#include <errno.h>
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <sys/user.h>
|
||||
|
@ -132,11 +133,11 @@ LogBuffer::LogBuffer(LastLogTimes *times)
|
|||
init();
|
||||
}
|
||||
|
||||
void LogBuffer::log(log_id_t log_id, log_time realtime,
|
||||
uid_t uid, pid_t pid, pid_t tid,
|
||||
const char *msg, unsigned short len) {
|
||||
int LogBuffer::log(log_id_t log_id, log_time realtime,
|
||||
uid_t uid, pid_t pid, pid_t tid,
|
||||
const char *msg, unsigned short len) {
|
||||
if ((log_id >= LOG_ID_MAX) || (log_id < 0)) {
|
||||
return;
|
||||
return -EINVAL;
|
||||
}
|
||||
LogBufferElement *elem = new LogBufferElement(log_id, realtime,
|
||||
uid, pid, tid, msg, len);
|
||||
|
@ -193,6 +194,8 @@ void LogBuffer::log(log_id_t log_id, log_time realtime,
|
|||
stats.add(elem);
|
||||
maybePrune(log_id);
|
||||
pthread_mutex_unlock(&mLogElementsLock);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
||||
// If we're using more than 256K of memory for log entries, prune
|
||||
|
|
|
@ -48,9 +48,9 @@ public:
|
|||
LogBuffer(LastLogTimes *times);
|
||||
void init();
|
||||
|
||||
void log(log_id_t log_id, log_time realtime,
|
||||
uid_t uid, pid_t pid, pid_t tid,
|
||||
const char *msg, unsigned short len);
|
||||
int log(log_id_t log_id, log_time realtime,
|
||||
uid_t uid, pid_t pid, pid_t tid,
|
||||
const char *msg, unsigned short len);
|
||||
uint64_t flushTo(SocketClient *writer, const uint64_t start,
|
||||
bool privileged,
|
||||
int (*filter)(const LogBufferElement *element, void *arg) = NULL,
|
||||
|
|
|
@ -98,10 +98,11 @@ bool LogListener::onDataAvailable(SocketClient *cli) {
|
|||
// NB: hdr.msg_flags & MSG_TRUNC is not tested, silently passing a
|
||||
// truncated message to the logs.
|
||||
|
||||
logbuf->log((log_id_t)header->id, header->realtime,
|
||||
cred->uid, cred->pid, header->tid, msg,
|
||||
((size_t) n <= USHRT_MAX) ? (unsigned short) n : USHRT_MAX);
|
||||
reader->notifyNewLog();
|
||||
if (logbuf->log((log_id_t)header->id, header->realtime,
|
||||
cred->uid, cred->pid, header->tid, msg,
|
||||
((size_t) n <= USHRT_MAX) ? (unsigned short) n : USHRT_MAX) >= 0) {
|
||||
reader->notifyNewLog();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
|
|
@ -367,12 +367,12 @@ int main(int argc, char *argv[]) {
|
|||
|
||||
int rc = klogctl(KLOG_READ_ALL, buf, len);
|
||||
|
||||
buf[len - 1] = '\0';
|
||||
if (rc >= 0) {
|
||||
buf[len - 1] = '\0';
|
||||
|
||||
for(char *ptr, *tok = buf;
|
||||
(rc >= 0) && ((tok = strtok_r(tok, "\r\n", &ptr)));
|
||||
tok = NULL) {
|
||||
rc = al->log(tok);
|
||||
for (char *ptr, *tok = buf; (tok = strtok_r(tok, "\r\n", &ptr)); tok = NULL) {
|
||||
al->log(tok);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue