From: Mike Yuan Date: Thu, 21 Mar 2024 10:29:07 +0000 (+0800) Subject: cgroup-util: use path_find_first_component where appropriate X-Git-Tag: v256-rc1~450 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=66d826026e34d52e84ccacecc18a009244632607;p=thirdparty%2Fsystemd.git cgroup-util: use path_find_first_component where appropriate Prompted by 8922a728f732a716ecd17dd67cd39bc1a0fc4aa5 --- diff --git a/src/basic/cgroup-util.c b/src/basic/cgroup-util.c index 60b4e3f2269..6991460f86e 100644 --- a/src/basic/cgroup-util.c +++ b/src/basic/cgroup-util.c @@ -1500,22 +1500,25 @@ int cg_path_get_slice(const char *p, char **ret_slice) { assert(p); assert(ret_slice); - /* Finds the right-most slice unit from the beginning, but - * stops before we come to the first non-slice unit. */ + /* Finds the right-most slice unit from the beginning, but stops before we come to + * the first non-slice unit. */ for (;;) { - p += strspn(p, "/"); + const char *s; + int n; - size_t n = strcspn(p, "/"); - if (!valid_slice_name(p, n)) + n = path_find_first_component(&p, /* accept_dot_dot = */ false, &s); + if (n < 0) + return n; + if (!valid_slice_name(s, n)) break; - e = p; - p += n; + e = s; } if (e) return cg_path_decode_unit(e, ret_slice); + return strdup_to(ret_slice, SPECIAL_ROOT_SLICE); }