diff --git a/tools/lkl/cptofs.c b/tools/lkl/cptofs.c index d4f32df2f10f6d..a43e6b016b83db 100644 --- a/tools/lkl/cptofs.c +++ b/tools/lkl/cptofs.c @@ -480,6 +480,27 @@ static int searchdir(const char *src, const char *dst, const char *match) return ret; } +static int match_root(const char *src) +{ + const char *c = src; + + while (*c) { + switch (*c) { + case '.': + if (c > src && c[-1] == '.') + return 0; + break; + case '/': + break; + default: + return 0; + } + c++; + } + + return 1; +} + int copy_one(const char *src, const char *mpoint, const char *dst) { char *src_path_dir, *src_path_base; @@ -493,6 +514,9 @@ int copy_one(const char *src, const char *mpoint, const char *dst) snprintf(dst_path, sizeof(dst_path), "%s", dst); } + if (match_root(src)) + return searchdir(src_path, dst, NULL); + src_path_dir = dirname(strdup(src_path)); src_path_base = basename(strdup(src_path));