From 393e1a64c00381012c707e6c36b628eddb8005ca Mon Sep 17 00:00:00 2001 From: Glenn Washburn Date: Tue, 9 Jul 2019 02:29:20 -0500 Subject: Add OWD and ARGV0 environment variables. Correctly create APPIMAGE envvar. --- src/firejail/appimage.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'src') diff --git a/src/firejail/appimage.c b/src/firejail/appimage.c index 7c60d9189..1da765d8f 100644 --- a/src/firejail/appimage.c +++ b/src/firejail/appimage.c @@ -126,16 +126,25 @@ void appimage_set(const char *appimage) { printf("appimage mounted on %s\n", mntdir); EUID_USER(); + char* abspath = realpath(appimage, NULL); + if (abspath == NULL) + errExit("Failed to obtain absolute path"); + // set environment - if (setenv("APPIMAGE", appimage, 1) < 0) + if (setenv("APPIMAGE", abspath, 1) < 0) errExit("setenv"); if (mntdir && setenv("APPDIR", mntdir, 1) < 0) errExit("setenv"); + if (size != 0 && setenv("ARGV0", appimage, 1) < 0) + errExit("setenv"); + if (setenv("OWD", cfg.cwd, 1) < 0) + errExit("setenv"); // build new command line if (asprintf(&cfg.command_line, "%s/AppRun", mntdir) == -1) errExit("asprintf"); + free(abspath); free(mode); #ifdef HAVE_GCOV __gcov_flush(); -- cgit v1.2.3-70-g09d2