
On 01/15/2015 04:25 AM, Cédric Bosdonnat wrote:
From: John Ferlan <jferlan@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@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.