path-unix: only accept absolute paths

The XDG Base Directory specification says “All paths set in these
environment variables must be absolute. If an implementation encounters
a relative path in any of these variables it should consider the path
invalid and ignore it.”
This commit is contained in:
Emmanuel Gil Peyrot authored and Dudemanguy committed 2026-07-02 17:36:50 +00:00
1 parent c22cac669e
commit 0279c0f07d
2 files changed
+5 -5

No files matched your search

+1 -1
View File
@@ -35,7 +35,7 @@ static void path_init(void)
char *home = getenv("HOME");
char *xdg_config = getenv("XDG_CONFIG_HOME");
if (xdg_config && xdg_config[0]) {
if (xdg_config && xdg_config[0] == '/') {
snprintf(mpv_home, sizeof(mpv_home), "%s/mpv", xdg_config);
} else if (home && home[0]) {
snprintf(mpv_home, sizeof(mpv_home), "%s/.config/mpv", home);
+4 -4
View File
@@ -44,7 +44,7 @@ static void path_init(void)
char *xdg_state = getenv("XDG_STATE_HOME");
bool err = false;
if (xdg_config && xdg_config[0]) {
if (xdg_config && xdg_config[0] == '/') {
err = err || MKPATH(mpv_home, "%s/mpv", xdg_config);
} else if (home && home[0]) {
err = err || MKPATH(mpv_home, "%s/.config/mpv", home);
@@ -56,20 +56,20 @@ static void path_init(void)
err = err || MKPATH(old_cache, "%s/.mpv/cache", home);
}
if (xdg_cache && xdg_cache[0]) {
if (xdg_cache && xdg_cache[0] == '/') {
err = err || MKPATH(mpv_cache, "%s/mpv", xdg_cache);
} else if (home && home[0]) {
err = err || MKPATH(mpv_cache, "%s/.cache/mpv", home);
}
if (xdg_state && xdg_state[0]) {
if (xdg_state && xdg_state[0] == '/') {
err = err || MKPATH(mpv_state, "%s/mpv", xdg_state);
} else if (home && home[0]) {
err = err || MKPATH(mpv_state, "%s/.local/state/mpv", home);
}
char xdg_user_dirs[CONF_MAX];
if (xdg_config && xdg_config[0]) {
if (xdg_config && xdg_config[0] == '/') {
err = err || MKPATH(xdg_user_dirs, "%s/user-dirs.dirs", xdg_config);
} else if (home && home[0]) {
err = err || MKPATH(xdg_user_dirs, "%s/.config/user-dirs.dirs", home);