On 01/15/2015 04:25 AM, Cédric Bosdonnat wrote: > From: John Ferlan <jferlan@xxxxxxxxxx> > > 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@xxxxxxxxxx> > --- > 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. -- libvir-list mailing list libvir-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/libvir-list