[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