Fix leaks in mount_one()
This change avoids leaks in mount_one() when the calls to mount(2) fail.
Bug: None
Test: Builds
Change-Id: I5dc5cd100fb9ccad87706b52a6f2b745713c736c
diff --git a/libminijail.c b/libminijail.c
index b6e2b1b..9cf3232 100644
--- a/libminijail.c
+++ b/libminijail.c
@@ -1372,7 +1372,7 @@
(m->flags & MS_BIND));
if (ret) {
pwarn("creating mount target '%s' failed", dest);
- return ret;
+ goto error;
}
/*
@@ -1388,7 +1388,7 @@
ret = mount(m->src, dest, m->type, m->flags, m->data);
if (ret) {
pwarn("mount: %s -> %s", m->src, dest);
- return ret;
+ goto error;
}
if (remount_ro) {
@@ -1397,13 +1397,17 @@
m->flags | MS_REMOUNT, m->data);
if (ret) {
pwarn("bind ro: %s -> %s", m->src, dest);
- return ret;
+ goto error;
}
}
free(dest);
if (m->next)
return mount_one(j, m->next, dev_path);
+ return 0;
+
+error:
+ free(dest);
return ret;
}