Replace a few more str(n)dupa by str(n)dup + free

strdup and strndup still don't exist on bionic, so we need to do the alloc() call ourselves or free the memory by hand. Signed-off-by: 's avatarStéphane Graber <stgraber@ubuntu.com> Acked-by: 's avatarSerge Hallyn <serge.hallyn@ubuntu.com>
parent 1d374b97
...@@ -1602,7 +1602,8 @@ static int overlayfs_mount(struct bdev *bdev) ...@@ -1602,7 +1602,8 @@ static int overlayfs_mount(struct bdev *bdev)
// separately mount it first // separately mount it first
// mount -t overlayfs -oupperdir=${upper},lowerdir=${lower} lower dest // mount -t overlayfs -oupperdir=${upper},lowerdir=${lower} lower dest
dup = strdupa(bdev->src); dup = alloca(strlen(bdev->src)+1);
strcpy(dup, bdev->src);
if (!(lower = index(dup, ':'))) if (!(lower = index(dup, ':')))
return -22; return -22;
if (!(upper = index(++lower, ':'))) if (!(upper = index(++lower, ':')))
...@@ -1770,7 +1771,8 @@ static int overlayfs_create(struct bdev *bdev, const char *dest, const char *n, ...@@ -1770,7 +1771,8 @@ static int overlayfs_create(struct bdev *bdev, const char *dest, const char *n,
return -1; return -1;
} }
delta = strdupa(dest); delta = alloca(strlen(dest)+1);
strcpy(delta, dest);
strcpy(delta+len-6, "delta0"); strcpy(delta+len-6, "delta0");
if (mkdir_p(delta, 0755) < 0) { if (mkdir_p(delta, 0755) < 0) {
......
...@@ -184,13 +184,15 @@ extern int mkdir_p(const char *dir, mode_t mode) ...@@ -184,13 +184,15 @@ extern int mkdir_p(const char *dir, mode_t mode)
do { do {
dir = tmp + strspn(tmp, "/"); dir = tmp + strspn(tmp, "/");
tmp = dir + strcspn(dir, "/"); tmp = dir + strcspn(dir, "/");
makeme = strndupa(orig, dir - orig); makeme = strndup(orig, dir - orig);
if (*makeme) { if (*makeme) {
if (mkdir(makeme, mode) && errno != EEXIST) { if (mkdir(makeme, mode) && errno != EEXIST) {
SYSERROR("failed to create directory '%s'\n", makeme); SYSERROR("failed to create directory '%s'\n", makeme);
free(makeme);
return -1; return -1;
} }
} }
free(makeme);
} while(tmp != dir); } while(tmp != dir);
return 0; return 0;
......
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