[libvirt] [PATCH 3/6] conf: audit: Split out common steps to audit domain devices

Ján Tomko jtomko at redhat.com
Thu Jul 3 13:29:35 UTC 2014


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

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 836 bytes
Desc: OpenPGP digital signature
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20140703/354933fd/attachment-0001.sig>


More information about the libvir-list mailing list