
On 07/03/2014 12:04 PM, Peter Krempa wrote:
Extract common operations done when creating an audit message to a separate generic function that can be reused and convert RNG, disk, FS and net audit to use it. --- src/conf/domain_audit.c | 175 ++++++++++++++++-------------------------------- 1 file changed, 57 insertions(+), 118 deletions(-)
diff --git a/src/conf/domain_audit.c b/src/conf/domain_audit.c index 91095b1..4c4290c 100644 --- a/src/conf/domain_audit.c +++ b/src/conf/domain_audit.c @@ -93,46 +93,73 @@ virDomainAuditChardevPath(virDomainChrSourceDefPtr chr) }
-void -virDomainAuditDisk(virDomainObjPtr vm, - const char *oldDef, const char *newDef, - const char *reason, bool success) +static void +virDomainAuditGenericDev(virDomainObjPtr vm, + const char *type, + const char *oldsrcpath, + const char *newsrcpath, + const char *reason, + bool success) { + char *newdev = NULL; + char *olddev = NULL; char uuidstr[VIR_UUID_STRING_BUFLEN]; char *vmname;
vmname can be used unitialized in the cleanup section on OOM
char *oldsrc = NULL; char *newsrc = NULL; const char *virt;
- virUUIDFormat(vm->def->uuid, uuidstr); - if (!(vmname = virAuditEncode("vm", vm->def->name))) { - VIR_WARN("OOM while encoding audit message");
+ /* if both new and old source aren't provided don't log anything */ + if (!newsrcpath && !oldsrcpath)
Please move this to the next commit and let this one be just code movement.
return; - } + + if (virAsprintfQuiet(&newdev, "new-%s", type) < 0) + goto no_memory; + + if (virAsprintfQuiet(&olddev, "old-%s", type) < 0) + goto no_memory; + + virUUIDFormat(vm->def->uuid, uuidstr); + + if (!(vmname = virAuditEncode("vm", vm->def->name))) + goto no_memory;
if (!(virt = virDomainVirtTypeToString(vm->def->virtType))) { - VIR_WARN("Unexpected virt type %d while encoding audit message", vm->def->virtType); + VIR_WARN("Unexpected virt type %d while encoding audit message", + vm->def->virtType); virt = "?"; }
@@ -274,34 +228,19 @@ virDomainAuditNet(virDomainObjPtr vm, virDomainNetDefPtr oldDef, virDomainNetDefPtr newDef, const char *reason, bool success) {
- - VIR_AUDIT(VIR_AUDIT_RECORD_RESOURCE, success, - "virt=%s resrc=net reason=%s %s uuid=%s old-net=%s new-net=%s", - virt, reason, vmname, uuidstr, - oldDef ? oldMacstr : "?", - newDef ? newMacstr : "?"); - - VIR_FREE(vmname); + virDomainAuditGenericDev(vm, "fs",
The resrc should be "net" here, not "fs".
+ oldDef ? oldMacstr : NULL, + newDef ? newMacstr : NULL, + reason, success); }
/**
ACK with the nits fixed. Jan