Merge "logd: remove SELinux dup handling"
This commit is contained in:
commit
8e6fb82af6
1 changed files with 10 additions and 63 deletions
|
|
@ -229,70 +229,17 @@ int LogAudit::logPrint(const char* fmt, ...) {
|
|||
static const char log_warning[] = { KMSG_PRIORITY(LOG_WARNING) };
|
||||
static const char newline[] = "\n";
|
||||
|
||||
// Dedupe messages, checking for identical messages starting with avc:
|
||||
static unsigned count;
|
||||
static char* last_str;
|
||||
static bool last_info;
|
||||
auditParse(str, uid, &denial_metadata);
|
||||
iov[0].iov_base = info ? const_cast<char*>(log_info) : const_cast<char*>(log_warning);
|
||||
iov[0].iov_len = info ? sizeof(log_info) : sizeof(log_warning);
|
||||
iov[1].iov_base = str;
|
||||
iov[1].iov_len = strlen(str);
|
||||
iov[2].iov_base = const_cast<char*>(denial_metadata.c_str());
|
||||
iov[2].iov_len = denial_metadata.length();
|
||||
iov[3].iov_base = const_cast<char*>(newline);
|
||||
iov[3].iov_len = strlen(newline);
|
||||
|
||||
if (last_str != nullptr) {
|
||||
static const char avc[] = "): avc: ";
|
||||
char* avcl = strstr(last_str, avc);
|
||||
bool skip = false;
|
||||
|
||||
if (avcl) {
|
||||
char* avcr = strstr(str, avc);
|
||||
|
||||
skip = avcr &&
|
||||
!fastcmp<strcmp>(avcl + strlen(avc), avcr + strlen(avc));
|
||||
if (skip) {
|
||||
++count;
|
||||
free(last_str);
|
||||
last_str = strdup(str);
|
||||
last_info = info;
|
||||
}
|
||||
}
|
||||
if (!skip) {
|
||||
static const char resume[] = " duplicate messages suppressed\n";
|
||||
iov[0].iov_base = last_info ? const_cast<char*>(log_info)
|
||||
: const_cast<char*>(log_warning);
|
||||
iov[0].iov_len =
|
||||
last_info ? sizeof(log_info) : sizeof(log_warning);
|
||||
iov[1].iov_base = last_str;
|
||||
iov[1].iov_len = strlen(last_str);
|
||||
iov[2].iov_base = const_cast<char*>(denial_metadata.c_str());
|
||||
iov[2].iov_len = denial_metadata.length();
|
||||
if (count > 1) {
|
||||
iov[3].iov_base = const_cast<char*>(resume);
|
||||
iov[3].iov_len = strlen(resume);
|
||||
} else {
|
||||
iov[3].iov_base = const_cast<char*>(newline);
|
||||
iov[3].iov_len = strlen(newline);
|
||||
}
|
||||
|
||||
writev(fdDmesg, iov, arraysize(iov));
|
||||
free(last_str);
|
||||
last_str = nullptr;
|
||||
}
|
||||
}
|
||||
if (last_str == nullptr) {
|
||||
count = 0;
|
||||
last_str = strdup(str);
|
||||
last_info = info;
|
||||
}
|
||||
if (count == 0) {
|
||||
auditParse(str, uid, &denial_metadata);
|
||||
iov[0].iov_base = info ? const_cast<char*>(log_info)
|
||||
: const_cast<char*>(log_warning);
|
||||
iov[0].iov_len = info ? sizeof(log_info) : sizeof(log_warning);
|
||||
iov[1].iov_base = str;
|
||||
iov[1].iov_len = strlen(str);
|
||||
iov[2].iov_base = const_cast<char*>(denial_metadata.c_str());
|
||||
iov[2].iov_len = denial_metadata.length();
|
||||
iov[3].iov_base = const_cast<char*>(newline);
|
||||
iov[3].iov_len = strlen(newline);
|
||||
|
||||
writev(fdDmesg, iov, arraysize(iov));
|
||||
}
|
||||
writev(fdDmesg, iov, arraysize(iov));
|
||||
}
|
||||
|
||||
if (!main && !events) {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue