diff options
Diffstat (limited to 'logd/LogAudit.cpp')
-rw-r--r-- | logd/LogAudit.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/logd/LogAudit.cpp b/logd/LogAudit.cpp index 90370e9..caae54b 100644 --- a/logd/LogAudit.cpp +++ b/logd/LogAudit.cpp @@ -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'; |