Skip to content
Snippets Groups Projects
Commit 767d03eb authored by Simon McVittie's avatar Simon McVittie
Browse files

runtime: Cope with /tmp being a symlink

If /tmp is a symlink in the current execution environment, then when
we ask bwrap to bind-mount /tmp/pressure-vessel-wrap.XXXXXX/overrides
over itself, it will try to create the parent directory /tmp, and fail
because there's a symlink in the way. Canonicalize the path and use that
instead.

Partially addresses
https://github.com/ValveSoftware/steam-runtime/issues/321


(symlinks "above" the home directory have the same problem, but are
harder to fix).

Signed-off-by: default avatarSimon McVittie <smcv@collabora.com>
parent 78598444
No related branches found
No related tags found
1 merge request!199runtime: Cope with /tmp being a symlink
Pipeline #6013 passed
...@@ -887,11 +887,17 @@ pv_runtime_initable_init (GInitable *initable, ...@@ -887,11 +887,17 @@ pv_runtime_initable_init (GInitable *initable,
{ {
/* We currently only need a temporary directory if we don't have /* We currently only need a temporary directory if we don't have
* a mutable sysroot to work with. */ * a mutable sysroot to work with. */
self->tmpdir = g_dir_make_tmp ("pressure-vessel-wrap.XXXXXX", error); g_autofree gchar *tmpdir = g_dir_make_tmp ("pressure-vessel-wrap.XXXXXX",
error);
if (self->tmpdir == NULL) if (tmpdir == NULL)
return FALSE; return FALSE;
self->tmpdir = realpath (tmpdir, NULL);
if (self->tmpdir == NULL)
return glnx_throw_errno_prefix (error, "realpath(\"%s\")", tmpdir);
self->overrides = g_build_filename (self->tmpdir, "overrides", NULL); self->overrides = g_build_filename (self->tmpdir, "overrides", NULL);
self->overrides_in_container = "/overrides"; self->overrides_in_container = "/overrides";
self->runtime_files = self->source_files; self->runtime_files = self->source_files;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment