]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
tests: virfilemock: realpath: Allow non-null second parameter
authorTim Wiederhake <twiederh@redhat.com>
Thu, 6 May 2021 15:08:34 +0000 (17:08 +0200)
committerMichal Privoznik <mprivozn@redhat.com>
Mon, 14 Jun 2021 10:05:50 +0000 (12:05 +0200)
When other preloaded libraries wrap and / or make calls to `realpath`
(e.g. LLVM's AddessSanitizer), the second parameter is no longer
guaranteed to be NULL.

Signed-off-by: Tim Wiederhake <twiederh@redhat.com>
Reviewed-by: Michal Privoznik <mprivozn@redhat.com>
build-aux/syntax-check.mk
tests/virfilemock.c

index 552d639119cdc00b369c15580441e657f4bfbc0c..03b7599abc9097f39d7e2088eef5b21e18251660 100644 (file)
@@ -1740,7 +1740,7 @@ exclude_file_name_regexp--sc_libvirt_unmarked_diagnostics = \
 exclude_file_name_regexp--sc_po_check = ^(docs/|src/rpc/gendispatch\.pl$$|tests/commandtest.c$$)
 
 exclude_file_name_regexp--sc_prohibit_PATH_MAX = \
-       ^build-aux/syntax-check\.mk$$
+       ^(build-aux/syntax-check\.mk|tests/virfilemock.c)$$
 
 exclude_file_name_regexp--sc_prohibit_access_xok = \
        ^(src/util/virutil\.c)$$
index 7c9174bdd987f90e1fc40d78e80c9f7b559a2728..bf153ab769329b1e67761c777cd73c6348792041 100644 (file)
@@ -24,7 +24,6 @@
 #if WITH_LINUX_MAGIC_H
 # include <linux/magic.h>
 #endif
-#include <assert.h>
 
 #include "virmock.h"
 #include "virstring.h"
@@ -186,15 +185,20 @@ realpath(const char *path, char *resolved)
 
     if (getenv("LIBVIRT_MTAB")) {
         const char *p;
-        char *ret;
 
-        assert(resolved == NULL);
-        if ((p = STRSKIP(path, "/some/symlink")))
-            ret = g_strdup_printf("/gluster%s", p);
-        else
-            ret = g_strdup(path);
+        if ((p = STRSKIP(path, "/some/symlink"))) {
+            if (resolved)
+                g_snprintf(resolved, PATH_MAX, "/gluster%s", p);
+            else
+                resolved = g_strdup_printf("/gluster%s", p);
+        } else {
+            if (resolved)
+                g_strlcpy(resolved, path, PATH_MAX);
+            else
+                resolved = g_strdup(path);
+        }
 
-        return ret;
+        return resolved;
     }
 
     return real_realpath(path, resolved);