mirror of
https://github.com/systemd/systemd.git
synced 2024-12-21 13:34:21 +03:00
sd-path: don't chop off trailing slash in sd_path apis, when user provided them
This is a minor compat break, but given the slow adoption of the sd-path.h APIs I think it's one we should take. Basically, the idea is that if the user provides a suffix path with a trailing slash (thus encoding in the path that the last element must be a dir), we should keep it in place, and not suppress it, in order to not willy nilly reduce the amount of information contained in the path. Simplifications that do not alter meaning, and do not suppress information should be fine to apply to a path, but otherwise we really should be conservative on this.
This commit is contained in:
parent
cf7d0a2d2e
commit
616586b910
@ -366,12 +366,12 @@ static int get_path_alloc(uint64_t type, const char *suffix, char **ret) {
|
|||||||
if (r < 0)
|
if (r < 0)
|
||||||
return r;
|
return r;
|
||||||
|
|
||||||
if (suffix) {
|
if (!isempty(suffix)) {
|
||||||
char *suffixed = path_join(p, suffix);
|
char *suffixed = path_join(p, suffix);
|
||||||
if (!suffixed)
|
if (!suffixed)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
path_simplify(suffixed);
|
path_simplify_full(suffixed, PATH_SIMPLIFY_KEEP_TRAILING_SLASH);
|
||||||
|
|
||||||
free_and_replace(buffer, suffixed);
|
free_and_replace(buffer, suffixed);
|
||||||
} else if (!buffer) {
|
} else if (!buffer) {
|
||||||
@ -637,7 +637,7 @@ _public_ int sd_path_lookup_strv(uint64_t type, const char *suffix, char ***ret)
|
|||||||
if (!path_extend(i, suffix))
|
if (!path_extend(i, suffix))
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
path_simplify(*i);
|
path_simplify_full(*i, PATH_SIMPLIFY_KEEP_TRAILING_SLASH);
|
||||||
}
|
}
|
||||||
|
|
||||||
*ret = TAKE_PTR(l);
|
*ret = TAKE_PTR(l);
|
||||||
|
Loading…
Reference in New Issue
Block a user