[libvirt] [PATCH 2/7] security: Use virDomainSeclabelDefClear

Daniel P. Berrange berrange at redhat.com
Thu Jan 13 17:15:29 UTC 2011


On Wed, Jan 12, 2011 at 12:22:58PM -0500, Cole Robinson wrote:
> Renamed from virSecurityLabelDefFree.
> 
> Signed-off-by: Cole Robinson <crobinso at redhat.com>
> ---
>  cfg.mk                           |    1 +
>  src/conf/domain_conf.c           |   17 +++++++++--------
>  src/conf/domain_conf.h           |    1 +
>  src/libvirt_private.syms         |    2 +-
>  src/qemu/qemu_driver.c           |    4 +---
>  src/security/security_apparmor.c |   11 ++---------
>  src/security/security_selinux.c  |    9 ++-------
>  7 files changed, 17 insertions(+), 28 deletions(-)
> 
> diff --git a/cfg.mk b/cfg.mk
> index 03186b3..2c6f595 100644
> --- a/cfg.mk
> +++ b/cfg.mk
> @@ -98,6 +98,7 @@ useless_free_options =				\
>    --name=virDomainInputDefFree			\
>    --name=virDomainNetDefFree			\
>    --name=virDomainObjFree			\
> +  --name=virDomainSeclabelDefClear		\

This isn't needed

>    --name=virDomainSnapshotDefFree		\
>    --name=virDomainSnapshotObjFree		\
>    --name=virDomainSoundDefFree			\
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index b4df38c..8f6ef55 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -754,13 +754,14 @@ void virDomainDeviceDefFree(virDomainDeviceDefPtr def)
>      VIR_FREE(def);
>  }
>  
> -void virSecurityLabelDefFree(virDomainDefPtr def);
> -
> -void virSecurityLabelDefFree(virDomainDefPtr def)
> +void virDomainSeclabelDefClear(virSecurityLabelDefPtr seclabel)
>  {
> -    VIR_FREE(def->seclabel.model);
> -    VIR_FREE(def->seclabel.label);
> -    VIR_FREE(def->seclabel.imagelabel);
> +    if (!seclabel)
> +        return;

Nor is this.

> +    VIR_FREE(seclabel->model);
> +    VIR_FREE(seclabel->label);
> +    VIR_FREE(seclabel->imagelabel);
>  }
>  
>  static void
> @@ -855,7 +856,7 @@ void virDomainDefFree(virDomainDefPtr def)
>  
>      virDomainMemballoonDefFree(def->memballoon);
>  
> -    virSecurityLabelDefFree(def);
> +    virDomainSeclabelDefClear(&def->seclabel);
>  
>      virCPUDefFree(def->cpu);
>  
> @@ -4272,7 +4273,7 @@ virSecurityLabelDefParseXML(const virDomainDefPtr def,
>      return 0;
>  
>  error:
> -    virSecurityLabelDefFree(def);
> +    virDomainSeclabelDefClear(&def->seclabel);
>      return -1;
>  }
>  
> diff --git a/src/conf/domain_conf.h b/src/conf/domain_conf.h
> index a459a22..b5cf433 100644
> --- a/src/conf/domain_conf.h
> +++ b/src/conf/domain_conf.h
> @@ -1082,6 +1082,7 @@ void virDomainWatchdogDefFree(virDomainWatchdogDefPtr def);
>  void virDomainVideoDefFree(virDomainVideoDefPtr def);
>  void virDomainHostdevDefFree(virDomainHostdevDefPtr def);
>  void virDomainDeviceDefFree(virDomainDeviceDefPtr def);
> +void virDomainSeclabelDefClear(virSecurityLabelDefPtr seclabel);
>  int virDomainDeviceAddressIsValid(virDomainDeviceInfoPtr info,
>                                    int type);
>  int virDomainDevicePCIAddressIsValid(virDomainDevicePCIAddressPtr addr);
> diff --git a/src/libvirt_private.syms b/src/libvirt_private.syms
> index e9b8cb7..191ae6a 100644
> --- a/src/libvirt_private.syms
> +++ b/src/libvirt_private.syms
> @@ -279,6 +279,7 @@ virDomainRemoveInactive;
>  virDomainSaveConfig;
>  virDomainSaveStatus;
>  virDomainSaveXML;
> +virDomainSeclabelDefClear;
>  virDomainSnapshotAssignDef;
>  virDomainSnapshotDefFormat;
>  virDomainSnapshotDefFree;
> @@ -313,7 +314,6 @@ virDomainWatchdogActionTypeToString;
>  virDomainWatchdogModelTypeFromString;
>  virDomainWatchdogModelTypeToString;
>  
> -
>  # domain_event.h
>  virDomainEventCallbackListAdd;
>  virDomainEventCallbackListAddID;
> diff --git a/src/qemu/qemu_driver.c b/src/qemu/qemu_driver.c
> index 9eb9cd5..3745cce 100644
> --- a/src/qemu/qemu_driver.c
> +++ b/src/qemu/qemu_driver.c
> @@ -3043,9 +3043,7 @@ static void qemudShutdownVMDaemon(struct qemud_driver *driver,
>  
>      /* Clear out dynamically assigned labels */
>      if (vm->def->seclabel.type == VIR_DOMAIN_SECLABEL_DYNAMIC) {
> -        VIR_FREE(vm->def->seclabel.model);
> -        VIR_FREE(vm->def->seclabel.label);
> -        VIR_FREE(vm->def->seclabel.imagelabel);
> +        virDomainSeclabelDefClear(&vm->def->seclabel);
>      }
>  
>      virDomainDefClearDeviceAliases(vm->def);
> diff --git a/src/security/security_apparmor.c b/src/security/security_apparmor.c
> index d82ba73..42f812c 100644
> --- a/src/security/security_apparmor.c
> +++ b/src/security/security_apparmor.c
> @@ -475,9 +475,7 @@ AppArmorGenSecurityLabel(virSecurityManagerPtr mgr ATTRIBUTE_UNUSED,
>      goto clean;
>  
>    err:
> -    VIR_FREE(vm->def->seclabel.label);
> -    VIR_FREE(vm->def->seclabel.imagelabel);
> -    VIR_FREE(vm->def->seclabel.model);
> +    virDomainSeclabelDefClear(&vm->def->seclabel);
>  
>    clean:
>      VIR_FREE(profile_name);
> @@ -547,12 +545,7 @@ static int
>  AppArmorReleaseSecurityLabel(virSecurityManagerPtr mgr ATTRIBUTE_UNUSED,
>                               virDomainObjPtr vm)
>  {
> -    const virSecurityLabelDefPtr secdef = &vm->def->seclabel;
> -
> -    VIR_FREE(secdef->model);
> -    VIR_FREE(secdef->label);
> -    VIR_FREE(secdef->imagelabel);
> -
> +    virDomainSeclabelDefClear(&vm->def->seclabel);
>      return 0;
>  }
>  
> diff --git a/src/security/security_selinux.c b/src/security/security_selinux.c
> index d06afde..f11e209 100644
> --- a/src/security/security_selinux.c
> +++ b/src/security/security_selinux.c
> @@ -216,9 +216,7 @@ SELinuxGenSecurityLabel(virSecurityManagerPtr mgr ATTRIBUTE_UNUSED,
>      rc = 0;
>      goto done;
>  err:
> -    VIR_FREE(vm->def->seclabel.label);
> -    VIR_FREE(vm->def->seclabel.imagelabel);
> -    VIR_FREE(vm->def->seclabel.model);
> +    virDomainSeclabelDefClear(&vm->def->seclabel);
>  done:
>      VIR_FREE(scontext);
>      return rc;
> @@ -830,10 +828,7 @@ SELinuxReleaseSecurityLabel(virSecurityManagerPtr mgr ATTRIBUTE_UNUSED,
>          context_free(con);
>      }
>  
> -    VIR_FREE(secdef->model);
> -    VIR_FREE(secdef->label);
> -    VIR_FREE(secdef->imagelabel);
> -
> +    virDomainSeclabelDefClear(secdef);
>      return 0;
>  }
>  

ACK to the rest of the patch 

Daniel




More information about the libvir-list mailing list