45 lines
1.9 KiB
Diff
45 lines
1.9 KiB
Diff
|
|
diff -Nurp bubblewrap-0.3.1/bubblewrap.c bubblewrap-0.3.1-old/bubblewrap.c
|
||
|
|
--- bubblewrap-0.3.1/bubblewrap.c 2018-09-26 08:55:17.000000000 -0400
|
||
|
|
+++ bubblewrap-0.3.1-old/bubblewrap.c 2019-06-13 03:26:14.489000000 -0400
|
||
|
|
@@ -1977,7 +1977,7 @@ main (int argc,
|
||
|
|
char **argv)
|
||
|
|
{
|
||
|
|
mode_t old_umask;
|
||
|
|
- cleanup_free char *base_path = NULL;
|
||
|
|
+ const char *base_path = NULL;
|
||
|
|
int clone_flags;
|
||
|
|
char *old_cwd = NULL;
|
||
|
|
pid_t pid;
|
||
|
|
@@ -2117,15 +2117,12 @@ main (int argc,
|
||
|
|
die_with_error ("Can't open /proc");
|
||
|
|
|
||
|
|
/* We need *some* mountpoint where we can mount the root tmpfs.
|
||
|
|
- We first try in /run, and if that fails, try in /tmp. */
|
||
|
|
- base_path = xasprintf ("/run/user/%d/.bubblewrap", real_uid);
|
||
|
|
- if (ensure_dir (base_path, 0755))
|
||
|
|
- {
|
||
|
|
- free (base_path);
|
||
|
|
- base_path = xasprintf ("/tmp/.bubblewrap-%d", real_uid);
|
||
|
|
- if (ensure_dir (base_path, 0755))
|
||
|
|
- die_with_error ("Creating root mountpoint failed");
|
||
|
|
- }
|
||
|
|
+ * Because we use pivot_root, it won't appear to be mounted from
|
||
|
|
+ * * the perspective of the sandboxed process, so we can use anywhere
|
||
|
|
+ * * that is sure to exist, that is sure to not be a symlink controlled
|
||
|
|
+ * * by someone malicious, and that we won't immediately need to
|
||
|
|
+ * * access ourselves. */
|
||
|
|
+ base_path = "/tmp";
|
||
|
|
|
||
|
|
__debug__ (("creating new namespace\n"));
|
||
|
|
|
||
|
|
@@ -2315,7 +2312,8 @@ main (int argc,
|
||
|
|
/* We create a subdir "$base_path/newroot" for the new root, that
|
||
|
|
* way we can pivot_root to base_path, and put the old root at
|
||
|
|
* "$base_path/oldroot". This avoids problems accessing the oldroot
|
||
|
|
- * dir if the user requested to bind mount something over / */
|
||
|
|
+ * dir if the user requested to bind mount something over / (or
|
||
|
|
+ * over /tmp, now that we use that for base_path). */
|
||
|
|
|
||
|
|
if (mkdir ("newroot", 0755))
|
||
|
|
die_with_error ("Creating newroot failed");
|