From 8feae8e1369e2b418534086e19992554541ce632 Mon Sep 17 00:00:00 2001 From: "Daniel P. Berrange" Date: Wed, 25 Sep 2013 09:33:12 +0100 Subject: [PATCH] Don't clobber return value in virInterfaceDefParseProtoIPv6 Several places in virInterfaceDefParseProtoIPv6 clobber the default 'ret' return value. So when jumping to cleanup on error, 'ret' may mistakenly be set to 0 instead of -1. This caused failure to report OOM errors, meaning data was silently lost during parsing. Signed-off-by: Daniel P. Berrange --- src/conf/interface_conf.c | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/src/conf/interface_conf.c b/src/conf/interface_conf.c index 19d03270ef..79aab6e738 100644 --- a/src/conf/interface_conf.c +++ b/src/conf/interface_conf.c @@ -309,9 +309,8 @@ virInterfaceDefParseProtoIPv4(virInterfaceProtocolDefPtr def, dhcp = virXPathNode("./dhcp", ctxt); if (dhcp != NULL) { - ret = virInterfaceDefParseDhcp(def, dhcp, ctxt); - if (ret != 0) - return ret; + if (virInterfaceDefParseDhcp(def, dhcp, ctxt) < 0) + return -1; } nIpNodes = virXPathNodeSet("./ip", ctxt, &ipNodes); @@ -332,8 +331,7 @@ virInterfaceDefParseProtoIPv4(virInterfaceProtocolDefPtr def, goto error; ctxt->node = ipNodes[i]; - ret = virInterfaceDefParseIp(ip, ctxt); - if (ret != 0) { + if (virInterfaceDefParseIp(ip, ctxt) < 0) { virInterfaceIpDefFree(ip); goto error; } @@ -365,9 +363,8 @@ virInterfaceDefParseProtoIPv6(virInterfaceProtocolDefPtr def, dhcp = virXPathNode("./dhcp", ctxt); if (dhcp != NULL) { - ret = virInterfaceDefParseDhcp(def, dhcp, ctxt); - if (ret != 0) - return ret; + if (virInterfaceDefParseDhcp(def, dhcp, ctxt) < 0) + return -1; } nIpNodes = virXPathNodeSet("./ip", ctxt, &ipNodes); @@ -388,8 +385,7 @@ virInterfaceDefParseProtoIPv6(virInterfaceProtocolDefPtr def, goto error; ctxt->node = ipNodes[i]; - ret = virInterfaceDefParseIp(ip, ctxt); - if (ret != 0) { + if (virInterfaceDefParseIp(ip, ctxt) < 0) { virInterfaceIpDefFree(ip); goto error; } -- GitLab