+/*
+ * Check if a name is safe to use in a path.
+ *
+ * A name that is deemed "path-safe":
+ * - Does not contains a path separator (/ or \, platform dependant),
+ * - Does not start with a '.' (hidden file/folder),
+ * - Is not empty.
+ */
+static bool is_name_path_safe(const char *name)
+{
+ const size_t name_len = strlen(name);
+
+ /* Not empty. */
+ if (name_len == 0) {
+ WARN("An empty name is not allowed to be used in a path");
+ return false;
+ }
+ /* Does not start with '.'. */
+ if (name[0] == '.') {
+ WARN("Name \"%s\" is not allowed to be used in a path since it starts with '.'", name);
+ return false;
+ }
+ /* Does not contain a path-separator. */
+ if (strchr(name, LTTNG_PATH_SEPARATOR)) {
+ WARN("Name \"%s\" is not allowed to be used in a path since it contains a path separator", name);
+ return false;
+ }
+
+ return true;
+}
+