[libvirt] [PATCH v2 2/3] Add test case for virHashEqual function
Michal Privoznik
mprivozn at redhat.com
Tue Jan 24 11:19:13 UTC 2012
On 18.01.2012 17:20, Stefan Berger wrote:
> +
> +static int
> +testHashEqual(const void *data ATTRIBUTE_UNUSED)
> +{
> + virHashTablePtr hash1, hash2;
> + int ret = -1;
> + char keya[] = "a";
> + char keyb[] = "b";
> + char keyc[] = "c";
> + char value1[] = "1";
> + char value2[] = "2";
> + char value3[] = "3";
> + char value4[] = "4";
> +
> + if (!(hash1 = virHashCreate(0, NULL)) ||
> + !(hash2 = virHashCreate(0, NULL)) ||
Actually, if the first virHashCreate() returns NULL, hash2 remains
uninitialized and we jump
> + virHashAddEntry(hash1, keya, value1) < 0 ||
> + virHashAddEntry(hash1, keyb, value2) < 0 ||
> + virHashAddEntry(hash1, keyc, value3) < 0 ||
> + virHashAddEntry(hash2, keya, value1) < 0 ||
> + virHashAddEntry(hash2, keyb, value2) < 0) {
> + if (virTestGetVerbose()) {
> + testError("\nfailed to create hashes");
> + }
> + goto cleanup;
> + }
over here and do free() on uninitialized pointer.
> +
> +cleanup:
> + virHashFree(hash1);
> + virHashFree(hash2);
> + return ret;
> +}
Therefore I am pushing this under trivial and build-breaker rules (yeah,
one thing - and perhaps the only one - i like about 4.6 gcc is enhanced
static analysis as I spotted warning while compiling current HEAD):
Author: Michal Privoznik <mprivozn at redhat.com>
Date: Tue Jan 24 12:09:42 2012 +0100
hashtest: Initialize variable in virHashEqual test
One of latest patches (b7bcb22ce2) enhanced testing for virHashEqual.
However, hash2 variable might be used uninitialized.
diff --git a/tests/hashtest.c b/tests/hashtest.c
index 6c45b01..441672c 100644
--- a/tests/hashtest.c
+++ b/tests/hashtest.c
@@ -583,7 +583,7 @@ testHashEqualCompValue(const void *value1, const
void *value2)
static int
testHashEqual(const void *data ATTRIBUTE_UNUSED)
{
- virHashTablePtr hash1, hash2;
+ virHashTablePtr hash1, hash2 = NULL;
int ret = -1;
char keya[] = "a";
char keyb[] = "b";
More information about the libvir-list
mailing list