[libvirt] [PATCHv2 7/7] domain_conf: Check errors from virSocketAddrFormat

Laine Stump laine at laine.org
Thu Jan 15 18:48:46 UTC 2015


On 01/15/2015 04:25 AM, Cédric Bosdonnat wrote:
> From: John Ferlan <jferlan at redhat.com>
>
> Commit id 'aa2cc721' added calls to virSocketAddrFormat but did not
> check for a NULL (error) return which could lead to bad output
> in the XML file.  Need to check for NULL return and cause failure.
>
> Signed-off-by: John Ferlan <jferlan at redhat.com>
> ---
>  src/conf/domain_conf.c | 14 ++++++++++----
>  1 file changed, 10 insertions(+), 4 deletions(-)
>
> diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c
> index d262d72..9dd11f0 100644
> --- a/src/conf/domain_conf.c
> +++ b/src/conf/domain_conf.c
> @@ -17182,7 +17182,7 @@ virDomainFSDefFormat(virBufferPtr buf,
>      return 0;
>  }
>  
> -static void
> +static int
>  virDomainNetIpsFormat(virBufferPtr buf, virDomainNetIpDefPtr *ips, size_t nips)
>  {
>      size_t i;
> @@ -17192,6 +17192,9 @@ virDomainNetIpsFormat(virBufferPtr buf, virDomainNetIpDefPtr *ips, size_t nips)
>          virSocketAddrPtr address = &ips[i]->address;
>          char *ipStr = virSocketAddrFormat(address);
>          const char *familyStr = NULL;
> +
> +        if (!ipStr)
> +            return -1;
>          if (VIR_SOCKET_ADDR_IS_FAMILY(address, AF_INET6))
>              familyStr = "ipv6";
>          else if (VIR_SOCKET_ADDR_IS_FAMILY(address, AF_INET))
> @@ -17205,6 +17208,7 @@ virDomainNetIpsFormat(virBufferPtr buf, virDomainNetIpDefPtr *ips, size_t nips)
>              virBufferAsprintf(buf, " prefix='%u'", ips[i]->prefix);
>          virBufferAddLit(buf, "/>\n");
>      }
> +    return 0;
>  }
>  
>  static int
> @@ -17373,8 +17377,9 @@ virDomainHostdevDefFormatCaps(virBufferPtr buf,
>      virBufferAddLit(buf, "</source>\n");
>  
>      if (def->source.caps.type == VIR_DOMAIN_HOSTDEV_CAPS_TYPE_NET) {
> -        virDomainNetIpsFormat(buf, def->source.caps.u.net.ips,
> -                              def->source.caps.u.net.nips);
> +        if (virDomainNetIpsFormat(buf, def->source.caps.u.net.ips,
> +                                 def->source.caps.u.net.nips) < 0)
> +            return -1;
>          if (virDomainNetRoutesFormat(buf, def->source.caps.u.net.routes,
>                                       def->source.caps.u.net.nroutes) < 0)
>              return -1;
> @@ -17766,7 +17771,8 @@ virDomainNetDefFormat(virBufferPtr buf,
>              return -1;
>      }
>  
> -    virDomainNetIpsFormat(buf, def->ips, def->nips);
> +    if (virDomainNetIpsFormat(buf, def->ips, def->nips) < 0)
> +        return -1;
>      if (virDomainNetRoutesFormat(buf, def->routes, def->nroutes) < 0)
>          return -1;
>  

ACK.




More information about the libvir-list mailing list