]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
tests: avoid referencing stale readdir pointer
authorDaniel P. Berrangé <berrange@redhat.com>
Fri, 7 Feb 2020 14:51:26 +0000 (14:51 +0000)
committerDaniel P. Berrangé <berrange@redhat.com>
Fri, 7 Feb 2020 14:57:59 +0000 (14:57 +0000)
The contents of 'struct dirent' are only valid until the next call to
readdir() or closedir(). It is thus invalid to save a pointer to the
'd_name' field. Somehow this hasn't affected the test suite until
recently when FreeBSD 12 started showing use of uninitialized memory
resulting in test failures.

Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
tests/testutilsqemu.c

index c17e284930de06aaefc982f28666ff4719513664..0cb9a7456d836865811fdb71f6346b3a7d112afe 100644 (file)
@@ -497,7 +497,7 @@ testQemuGetLatestCapsForArch(const char *arch,
     char *tmp = NULL;
     unsigned long maxver = 0;
     unsigned long ver;
-    const char *maxname = NULL;
+    g_autofree char *maxname = NULL;
     char *ret = NULL;
 
     fullsuffix = g_strdup_printf("%s.%s", arch, suffix);
@@ -522,7 +522,8 @@ testQemuGetLatestCapsForArch(const char *arch,
         }
 
         if (ver > maxver) {
-            maxname = ent->d_name;
+            g_free(maxname);
+            maxname = g_strdup(ent->d_name);
             maxver = ver;
         }
     }