On 5/6/21 5:31 PM, Peter Krempa wrote: > Compilers aren't able to see whether @result is set or not and thus > don't warn of a potential use of uninitialized value. Always set @result > to prevent uninitialized use. > > This is done by adding a @defaultResult argument to virXMLPropInt since > many places have a non-0 default. > > In certain cases such as in virDomainControllerDefParseXML we pass the > value from the original value, which will still trigger compiler checks > if unused while preserving the existing functionality of keeping the > previous value. > > This commit fixes 3 uses of uninitialized value parsed by this function: > in virDomainDiskSourceNetworkParse introduced by 38dc25989c5 > in virDomainChrSourceDefParseTCP introduced by fa48004af5b > in virDomainGraphicsListenDefParseXML introduced by 0b20fd3754c > > Signed-off-by: Peter Krempa <pkre...@redhat.com> > --- > src/conf/domain_conf.c | 57 +++++++++++++++++++++--------------------- > src/util/virxml.c | 6 ++++- > src/util/virxml.h | 3 ++- > 3 files changed, 36 insertions(+), 30 deletions(-) > > diff --git a/src/conf/domain_conf.c b/src/conf/domain_conf.c > index 78775bb2b3..2bc2e55ee4 100644 > --- a/src/conf/domain_conf.c > +++ b/src/conf/domain_conf.c > @@ -8221,7 +8221,7 @@ virDomainDiskSourceNetworkParse(xmlNodePtr node, > if (flags & VIR_DOMAIN_DEF_PARSE_STATUS) { > int value; > if (virXMLPropInt(node, "tlsFromConfig", 10, VIR_XML_PROP_NONE, > - &value) < 0) > + &value, 0) < 0) > return -1; > src->tlsFromConfig = !!value; > } > @@ -9414,7 +9414,7 @@ virDomainControllerDefParseXML(virDomainXMLOption > *xmlopt, > g_autofree xmlNodePtr *modelNodes = NULL; > int nmodelNodes = 0; > int numaNode = -1; > - int ports = -1; > + int ports; > VIR_XPATH_NODE_AUTORESTORE(ctxt) > int rc; > g_autofree char *idx = NULL; > @@ -9494,19 +9494,23 @@ virDomainControllerDefParseXML(virDomainXMLOption > *xmlopt, > if (ntargetNodes == 1) { > if (def->type == VIR_DOMAIN_CONTROLLER_TYPE_PCI) { > if (virXMLPropInt(targetNodes[0], "chassisNr", 0, VIR_XML_PROP_NONE, > - &def->opts.pciopts.chassisNr) < 0) > + &def->opts.pciopts.chassisNr, > + def->opts.pciopts.chassisNr) < 0)
Ugrh, but I don't think there's much better option, unless we are willing to turn virXMLPropInt() into a macro. Something like: #define virXMLPropInt(node, name, base, flags, result) \ (virXMLPropIntImpl(node, name, base, flags, result, *result)) That way, virXMLPropInt() would stay in line with other virXMLPropXXX functions which do not take the 6th argument and just force the default. Michal