Projects
Eulaceura:Factory
vhostmd
_service:obs_scm:0003-libmetrics-Initialize-loc...
Sign Up
Log In
Username
Password
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File _service:obs_scm:0003-libmetrics-Initialize-local-variable-ret-to-failure.patch of Package vhostmd
From 9db959c9e3f83cb2a4fc07534462e769990d9631 Mon Sep 17 00:00:00 2001 From: Jim Fehlig <jfehlig@suse.com> Date: Mon, 6 Jan 2020 16:33:24 -0700 Subject: [PATCH 03/19] libmetrics: Initialize local variable 'ret' to failure The get_mdef() and dump_xenstore_metrics() functions have local variables named 'ret' that are initialized to zero, meaning success. In failure paths 'ret' is set to -1 before jumping to the 'out' label. Invert this logic by initializing 'ret' to -1 and only setting it to success after the function bodies have successfully executed. Signed-off-by: Jim Fehlig <jfehlig@suse.com> --- libmetrics/libmetrics.c | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) diff --git a/libmetrics/libmetrics.c b/libmetrics/libmetrics.c index a5582e7..49b38ea 100644 --- a/libmetrics/libmetrics.c +++ b/libmetrics/libmetrics.c @@ -228,7 +228,7 @@ static int get_mdef(metric_disk *mdisk, private_metric *pmdef) xmlNodePtr node; char *str; char *xpath; - int ret = 0; + int ret = -1; ctxt = xmlXPathNewContext(mdisk->doc); if (!ctxt) { @@ -242,19 +242,16 @@ static int get_mdef(metric_disk *mdisk, private_metric *pmdef) if ((obj == NULL) || (obj->type != XPATH_NODESET)) { libmsg("%s(): No metrics found that matches %s in context:%s or malformed definition\n", __func__, pmdef->name, pmdef->context); - ret = -1; goto out; } if (xmlXPathNodeSetGetLength(obj->nodesetval) != 1) { libmsg("%s(): No metrics found that matches %s in context:%s or malformed definition\n", __func__, pmdef->name, pmdef->context); - ret = -1; goto out; } node = obj->nodesetval->nodeTab[0]; if ((str = (char *)xmlGetProp(node, BAD_CAST "type")) == NULL) { libmsg("%s(): Metric type not specified\n", __func__); - ret = -1; goto out; } metric_type_from_str((char *)str, &(pmdef->type)); @@ -267,7 +264,6 @@ static int get_mdef(metric_disk *mdisk, private_metric *pmdef) free(xpath); if ((obj == NULL) || (obj->type != XPATH_NODESET)) { libmsg("%s(): No metrics value found!\n", __func__); - ret = -1; goto out; } @@ -276,6 +272,7 @@ static int get_mdef(metric_disk *mdisk, private_metric *pmdef) str = (char *)xmlNodeListGetString(mdisk->doc, node, 1); pmdef->value = strdup(str); free(str); + ret = 0; out: if (obj) @@ -707,7 +704,7 @@ int dump_xenstore_metrics(const char *dest_file) char *buf = NULL, *path = NULL, *metrics = NULL; struct xs_handle *xsh = NULL; unsigned int len; - int ret = 0; + int ret = -1; xmlParserCtxtPtr pctxt = NULL; xmlDocPtr doc = NULL; int domid; @@ -726,35 +723,30 @@ int dump_xenstore_metrics(const char *dest_file) if ((domid = get_dom_id()) == -1) { libmsg("Unable to derive domID.\n" ); - ret = -1; goto out; } xsh = xs_domain_open(); if (xsh == NULL) { libmsg("xs_domain_open() error. errno: %d.\n", errno); - ret = -1; goto out; } path = xs_get_domain_path(xsh, domid); if (path == NULL) { libmsg("xs_get_domain_path() error. domid %d.\n", 0); - ret = -1; goto out; } asprintf(&buf, "%s/metrics", path); metrics = xs_read(xsh, XBT_NULL, buf, &len); if (metrics == NULL) { libmsg("xs_read(): uuid get error. %s.\n", buf); - ret = -1; goto out; } pctxt = xmlNewParserCtxt(); if (!pctxt || !pctxt->sax) { libmsg("%s(): failed to create parser \n", __func__); - ret = -1; goto out; } @@ -764,10 +756,10 @@ int dump_xenstore_metrics(const char *dest_file) XML_PARSE_NOWARNING); if (!doc) { libmsg("%s(): libxml failed to xenstore metrics attribute\n", __func__); - ret = -1; goto out; } xmlDocFormatDump(fp, doc, 1); + ret = 0; out: if (fp && fp != stdout) -- 2.32.0
Locations
Projects
Search
Status Monitor
Help
Open Build Service
OBS Manuals
API Documentation
OBS Portal
Reporting a Bug
Contact
Mailing List
Forums
Chat (IRC)
Twitter
Open Build Service (OBS)
is an
openSUSE project
.
浙ICP备2022010568号-2