From 3a7ba9f6b9d9a80c7f909bfbf24b5fc8c99a3176 Mon Sep 17 00:00:00 2001 From: Yu Watanabe Date: Mon, 10 Apr 2023 09:30:14 +0900 Subject: [PATCH] path-util: make iterator for path_find_last_component() always finish with the beginning of the buffer --- src/basic/path-util.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/basic/path-util.c b/src/basic/path-util.c index a5ab6045cd2..0b0f0da7602 100644 --- a/src/basic/path-util.c +++ b/src/basic/path-util.c @@ -901,6 +901,8 @@ static const char *skip_slash_or_dot_backward(const char *path, const char *q) { continue; if (q > path && strneq(q - 1, "/.", 2)) continue; + if (q == path && *q == '.') + continue; break; } return q; @@ -925,6 +927,12 @@ int path_find_last_component(const char *path, bool accept_dot_dot, const char * * ret: "bbbbb/cc//././" * return value: 5 (== strlen("bbbbb")) * + * Input: path: "//.//aaa///bbbbb/cc//././" + * next: "///bbbbb/cc//././" + * Output: next: "//.//aaa///bbbbb/cc//././" (next == path) + * ret: "aaa///bbbbb/cc//././" + * return value: 3 (== strlen("aaa")) + * * Input: path: "/", ".", "", or NULL * Output: next: equivalent to path * ret: NULL -- 2.47.3