From: Christian Brauner Date: Sat, 17 Feb 2018 18:46:44 +0000 (+0100) Subject: cgfsng: convert_devpath() X-Git-Tag: lxc-2.0.10~270 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4a185bf68e6c99c8cb58af52454a374e28ed6f92;p=thirdparty%2Flxc.git cgfsng: convert_devpath() Signed-off-by: Christian Brauner --- diff --git a/src/lxc/cgroups/cgfsng.c b/src/lxc/cgroups/cgfsng.c index b292c59a7..aa6ca129c 100644 --- a/src/lxc/cgroups/cgfsng.c +++ b/src/lxc/cgroups/cgfsng.c @@ -2582,41 +2582,43 @@ static int cgfsng_set(const char *filename, const char *value, const char *name, return ret; } -/* - * take devices cgroup line +/* take devices cgroup line * /dev/foo rwx * and convert it to a valid * type major:minor mode - * line. Return <0 on error. Dest is a preallocated buffer - * long enough to hold the output. + * line. Return <0 on error. Dest is a preallocated buffer long enough to hold + * the output. */ static int convert_devpath(const char *invalue, char *dest) { int n_parts; char *p, *path, type; - struct stat sb; unsigned long minor, major; + struct stat sb; int ret = -EINVAL; char *mode = NULL; path = must_copy_string(invalue); - /* - * read path followed by mode; ignore any trailing text. - * A ' # comment' would be legal. Technically other text - * is not legal, we could check for that if we cared to + /* Read path followed by mode. Ignore any trailing text. + * A ' # comment' would be legal. Technically other text is not + * legal, we could check for that if we cared to. */ for (n_parts = 1, p = path; *p && n_parts < 3; p++) { if (*p != ' ') continue; *p = '\0'; + if (n_parts != 1) break; p++; n_parts++; + while (*p == ' ') p++; + mode = p; + if (*p == '\0') goto out; } @@ -2637,7 +2639,7 @@ static int convert_devpath(const char *invalue, char *dest) type = 'c'; break; default: - ERROR("Unsupported device type %i for %s", m, path); + ERROR("Unsupported device type %i for \"%s\"", m, path); ret = -EINVAL; goto out; }