Blob Blame History Raw
From c71f920357ffb17cd13aaf9a12e8d77d1b29b08c Mon Sep 17 00:00:00 2001
Message-Id: <c71f920357ffb17cd13aaf9a12e8d77d1b29b08c@dist-git>
From: Martin Kletzander <mkletzan@redhat.com>
Date: Mon, 5 Jun 2017 17:02:03 +0200
Subject: [PATCH] audit: Fix the output message for shmem

After some discussion on and off the linux-audit mailing list, we
should use different fields for the audit messages.

Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=1218603

Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
(cherry picked from commit 6d12a1cb2fb0e0152a19518423dceafa7cf088fb)
Signed-off-by: Martin Kletzander <mkletzan@redhat.com>
Signed-off-by: Jiri Denemark <jdenemar@redhat.com>
---
 src/conf/domain_audit.c | 24 +++++++++++++-----------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c
index 2d9ff5e3ff..1e667af73c 100644
--- a/src/conf/domain_audit.c
+++ b/src/conf/domain_audit.c
@@ -983,15 +983,13 @@ virDomainAuditShmem(virDomainObjPtr vm,
     char uuidstr[VIR_UUID_STRING_BUFLEN];
     char *vmname = virAuditEncode("vm", vm->def->name);
     const char *srcpath = virDomainAuditChardevPath(&def->server.chr);
-    char *src = virAuditEncode("server", VIR_AUDIT_STR(srcpath));
-    char *shmem = virAuditEncode("shmem", VIR_AUDIT_STR(def->name));
     const char *virt = virDomainVirtTypeToString(vm->def->virtType);
-    char *size = NULL;
+    char *shmpath = NULL;
 
     virUUIDFormat(vm->def->uuid, uuidstr);
 
-    if (!vmname || !src || !shmem ||
-        virAsprintfQuiet(&size, "%llu", def->size) < 0) {
+    if (!vmname ||
+        virAsprintfQuiet(&shmpath, "/dev/shm/%s", def->name) < 0) {
         VIR_WARN("OOM while encoding audit message");
         goto cleanup;
     }
@@ -1002,14 +1000,18 @@ virDomainAuditShmem(virDomainObjPtr vm,
         virt = "?";
     }
 
-    VIR_AUDIT(VIR_AUDIT_RECORD_RESOURCE, success,
-              "virt=%s resrc=shmem reason=%s %s uuid=%s size=%s %s %s",
-              virt, reason, vmname, uuidstr, size, shmem, src);
+    if (def->server.enabled) {
+        VIR_AUDIT(VIR_AUDIT_RECORD_RESOURCE, success,
+                  "virt=%s resrc=ivshmem-socket reason=%s %s uuid=%s path=%s",
+                  virt, reason, vmname, uuidstr, VIR_AUDIT_STR(srcpath));
+    } else {
+        VIR_AUDIT(VIR_AUDIT_RECORD_RESOURCE, success,
+                  "virt=%s resrc=shmem reason=%s %s uuid=%s size=%llu path=%s",
+                  virt, reason, vmname, uuidstr, def->size, VIR_AUDIT_STR(shmpath));
+   }
 
  cleanup:
     VIR_FREE(vmname);
-    VIR_FREE(src);
-    VIR_FREE(size);
-    VIR_FREE(shmem);
+    VIR_FREE(shmpath);
     return;
 }
-- 
2.13.1