[libvirt PATCH 10/21] tests: Use glib memory function in testConfRoundTrip

Ján Tomko jtomko at redhat.com
Fri Sep 11 16:01:18 UTC 2020


On a Friday in 2020, Tim Wiederhake wrote:
>This also fixes a (hypothetical) bug where testConfRoundTrip would return 0 if
>virConfWriteMem() returned 0 and virTestCompareToFile failed.
>

The bug is not hypothetical, it renders all the tests using testConfRoundTrip
useless since they always pass even if the functionality they're
supposed to be testing give a different output.

Since it's a real bug, I think it deserves a separate commit.

>Signed-off-by: Tim Wiederhake <twiederh at redhat.com>
>---
> tests/virconftest.c | 29 ++++++++++-------------------
> 1 file changed, 10 insertions(+), 19 deletions(-)
>
>diff --git a/tests/virconftest.c b/tests/virconftest.c
>index ab29b5b712..c683344f49 100644
>--- a/tests/virconftest.c
>+++ b/tests/virconftest.c
>@@ -32,40 +32,31 @@
> static int testConfRoundTrip(const void *opaque)
> {
>     const char *name = opaque;
>-    int ret = -1;
>     g_autoptr(virConf) conf = NULL;
>     int len = 10000;
>-    char *buffer = NULL;
>-    char *srcfile = NULL;
>-    char *dstfile = NULL;
>+    g_autofree char *buffer = NULL;
>+    g_autofree char *srcfile = NULL;
>+    g_autofree char *dstfile = NULL;
>
>     srcfile = g_strdup_printf("%s/virconfdata/%s.conf", abs_srcdir, name);
>     dstfile = g_strdup_printf("%s/virconfdata/%s.out", abs_srcdir, name);
>
>-    if (VIR_ALLOC_N_QUIET(buffer, len) < 0) {
>-        fprintf(stderr, "out of memory\n");
>-        goto cleanup;
>-    }
>+    buffer = g_new0(char, len);
>     conf = virConfReadFile(srcfile, 0);
>     if (conf == NULL) {
>         fprintf(stderr, "Failed to process %s\n", srcfile);
>-        goto cleanup;
>+        return -1;
>     }

>-    ret = virConfWriteMem(buffer, &len, conf);
>-    if (ret < 0) {
>+
>+    if (virConfWriteMem(buffer, &len, conf) < 0) {

With this change separated.

Reviewed-by: Ján Tomko <jtomko at redhat.com>

Jano

>         fprintf(stderr, "Failed to serialize %s back\n", srcfile);
>-        goto cleanup;
>+        return -1;
>     }
>
>     if (virTestCompareToFile(buffer, dstfile) < 0)
>-        goto cleanup;
>+        return -1;
>
>-    ret = 0;
>- cleanup:
>-    VIR_FREE(srcfile);
>-    VIR_FREE(dstfile);
>-    VIR_FREE(buffer);
>-    return ret;
>+    return 0;
> }
>
>
>-- 
>2.26.2
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 488 bytes
Desc: not available
URL: <http://listman.redhat.com/archives/libvir-list/attachments/20200911/eefbb915/attachment-0001.sig>


More information about the libvir-list mailing list