tests: virfilemock: realpath: Allow non-null second parameter

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>
This commit is contained in:
Tim Wiederhake 2021-05-06 17:08:34 +02:00 committed by Michal Privoznik
parent c9ced46673
commit a86682c57e
2 changed files with 13 additions and 9 deletions

View 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)$$

View 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);