Skip to content

Commit

Permalink
cgfsng: convert_devpath()
Browse files Browse the repository at this point in the history
Signed-off-by: Christian Brauner <christian.brauner@ubuntu.com>
  • Loading branch information
Christian Brauner committed Feb 21, 2018
1 parent b03b723 commit 4a185bf
Showing 1 changed file with 12 additions and 10 deletions.
22 changes: 12 additions & 10 deletions src/lxc/cgroups/cgfsng.c
Expand Up @@ -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;
}
Expand All @@ -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;
}
Expand Down

0 comments on commit 4a185bf

Please sign in to comment.