+1
"Eduardo Lima (Etrunko)" <eblima(a)linux.vnet.ibm.com>
Sent by: libvirt-cim-bounces(a)redhat.com
11/03/2011 10:48 AM
Please respond to
List for discussion and development of libvirt CIM
<libvirt-cim(a)redhat.com>
To
libvirt-cim(a)redhat.com
cc
"Eduardo Lima \(Etrunko\)" <eblima(a)br.ibm.com>
Subject
[Libvirt-cim] [PATCH 6/8] Fix misuse of signed variables
From: Eduardo Lima (Etrunko) <eblima(a)br.ibm.com>
As revealed by Coverity scan report:
https://bugzilla.redhat.com/show_bug.cgi?id=728245#c8
https://bugzilla.redhat.com/attachment.cgi?id=530435
Error: NEGATIVE_RETURNS:
infostore.c:183: negative_return_fn: Function "open(filename, 66,
384)" returns
a negative number.
infostore.c:183: var_assign: Assigning: signed variable "isc->fd" =
"open".
infostore.c:214: negative_returns: "isc->fd" is passed
to a parameter
that
cannot be negative.
infostore.c:53: neg_sink_parm_call: Passing "ctx->fd" to "close",
which
cannot
accept a negative.
Error: NEGATIVE_RETURNS:
Virt_ComputerSystemIndication.c:518: negative_return_fn: Function
"platform_from_class(args->
classname)"
returns a negative number.
Virt_ComputerSystemIndication.c:503: return_negative_constant: Explicitly
returning negative value "-1".
Virt_ComputerSystemIndication.c:518: var_assign: Assigning: signed
variable
"platform" =
"platform_from_class".
Virt_ComputerSystemIndication.c:539: negative_returns: Using
variable "platform"
as an index to array
"active_filters".
Error: NEGATIVE_RETURNS:
Virt_ComputerSystemIndication.c:518: negative_return_fn: Function
"platform_from_class(args->
classname)"
returns a negative number.
Virt_ComputerSystemIndication.c:503: return_negative_constant: Explicitly
returning negative value "-1".
Virt_ComputerSystemIndication.c:518: var_assign: Assigning: signed
variable
"platform" =
"platform_from_class".
Virt_ComputerSystemIndication.c:596: negative_returns: Using
variable "platform"
as an index to array "thread_id".
Error: NEGATIVE_RETURNS:
Virt_VSMigrationService.c:512: negative_return_fn: Function "mkstemp
(filename)"
returns a negative number.
Virt_VSMigrationService.c:512: var_assign: Assigning: signed variable
"fd" = "mkstemp".
Virt_VSMigrationService.c:547: negative_returns: "fd" is passed to
aparameter
that cannot be negative.
Signed-off-by: Eduardo Lima (Etrunko) <eblima(a)br.ibm.com>
---
libxkutil/infostore.c | 4 +++-
src/Virt_ComputerSystemIndication.c | 12 +++++++++---
src/Virt_VSMigrationService.c | 3 ++-
3 files changed, 14 insertions(+), 5 deletions(-)
diff --git a/libxkutil/infostore.c b/libxkutil/infostore.c
index 716dedd..dd1e38c 100644
--- a/libxkutil/infostore.c
+++ b/libxkutil/infostore.c
@@ -50,7 +50,9 @@ static void infostore_cleanup_ctx(struct infostore_ctx
*ctx)
{
xmlXPathFreeContext(ctx->xpathctx);
xmlFreeDoc(ctx->doc);
- close(ctx->fd);
+
+ if (ctx->fd >= 0)
+ close(ctx->fd);
free(ctx);
}
diff --git a/src/Virt_ComputerSystemIndication.c b/src/
Virt_ComputerSystemIndication.c
index 337f20a..9b3b80b 100644
--- a/src/Virt_ComputerSystemIndication.c
+++ b/src/Virt_ComputerSystemIndication.c
@@ -518,11 +518,14 @@ static CMPI_THREAD_RETURN lifecycle_thread(void
*params)
char *prefix = class_prefix_name(args->classname);
int platform = platform_from_class(args->classname);
+ if (prefix == NULL || platform == -1)
+ goto init_out;
+
conn = connect_by_classname(_BROKER, args->classname, &s);
if (conn == NULL) {
CU_DEBUG("Unable to start lifecycle thread: "
"Failed to connect (cn: %s)", args->classname);
- goto out;
+ goto conn_out;
}
pthread_mutex_lock(&lifecycle_mutex);
@@ -591,16 +594,19 @@ static CMPI_THREAD_RETURN lifecycle_thread(void
*params)
}
}
- out:
CU_DEBUG("Exiting CSI event loop (%s)", prefix);
thread_id[platform] = 0;
pthread_mutex_unlock(&lifecycle_mutex);
stdi_free_ind_args(&args);
- free(prefix);
+
+ conn_out:
virConnectClose(conn);
+ init_out:
+ free(prefix);
+
return NULL;
}
diff --git a/src/Virt_VSMigrationService.c
b/src/Virt_VSMigrationService.c
index 414feda..be9bb7c 100644
--- a/src/Virt_VSMigrationService.c
+++ b/src/Virt_VSMigrationService.c
@@ -544,7 +544,8 @@ static char *write_params(CMPIArray *array)
if (file != NULL)
fclose(file);
- close(fd);
+ if (fd >= 0)
+ close(fd);
return filename;
}
--
1.7.4.4
_______________________________________________
Libvirt-cim mailing list
Libvirt-cim(a)redhat.com
https://www.redhat.com/mailman/listinfo/libvirt-cim