in aucoalesce/coalesce.go [209:244]
func normalizeCompound(msgs []*auparse.AuditMessage) (*Event, error) {
var special, syscall *auparse.AuditMessage
for i, msg := range msgs {
if i == 0 && msg.RecordType != auparse.AUDIT_SYSCALL {
special = msg
continue
}
if msg.RecordType == auparse.AUDIT_SYSCALL {
syscall = msg
break
}
}
if syscall == nil {
// All compound records have syscall messages.
return nil, errors.New("missing syscall message in compound event")
}
event := newEvent(special, syscall)
for _, msg := range msgs {
switch msg.RecordType {
case auparse.AUDIT_SYSCALL:
delete(event.Data, "items")
case auparse.AUDIT_PATH:
addPathRecord(msg, event)
case auparse.AUDIT_SOCKADDR:
addSockaddrRecord(msg, event)
case auparse.AUDIT_EXECVE:
addExecveRecord(msg, event)
default:
addFieldsToEventData(msg, event)
}
}
return event, nil
}