Commit 410d0f6e by Christian Brauner Committed by Stéphane Graber

aufs: support multiple lower layers

Do it in a safe way by using strstr() to check for the substring ":/" should ':' be part of a pathname. Signed-off-by: 's avatarChristian Brauner <christian.brauner@mailbox.org> Acked-by: 's avatarSerge E. Hallyn <serge.hallyn@ubuntu.com>
parent 9208af16
......@@ -234,7 +234,7 @@ int aufs_detect(const char *path)
int aufs_mount(struct bdev *bdev)
{
char *options, *dup, *lower, *upper;
char *tmp, *options, *dup, *lower, *upper;
int len;
unsigned long mntflags;
char *mntdata;
......@@ -250,9 +250,15 @@ int aufs_mount(struct bdev *bdev)
// mount -t aufs -obr=${upper}=rw:${lower}=ro lower dest
dup = alloca(strlen(bdev->src)+1);
strcpy(dup, bdev->src);
if (!(lower = strchr(dup, ':')))
return -22;
if (!(upper = strchr(++lower, ':')))
/* support multiple lower layers */
if (!(lower = strstr(dup, ":/")))
return -22;
lower++;
upper = lower;
while ((tmp = strstr(++upper, ":/"))) {
upper = tmp;
}
if (--upper == lower)
return -22;
*upper = '\0';
upper++;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment