ui-snapshot: do not access $HOME
It's a bit tedious to have to do this here too. If we encounter other issues with $HOME down the line, I'll look into adding some nice utility functions to handle this, or perhaps giving up on the hope that we could keep $HOME defined for scripts. This commit additionally adds a test case, should the issue surface again. Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
8d07ad3388
commit
8bf4a0465e
@ -37,5 +37,6 @@ test_no_home_access_success foo/tree/file-1
|
||||
test_no_home_access_success foo/commit
|
||||
test_no_home_access_success foo/diff
|
||||
test_no_home_access_success foo/patch
|
||||
test_no_home_access_success foo/snapshot/master.tar.gz
|
||||
|
||||
test_done
|
||||
|
@ -16,6 +16,7 @@ static int write_archive_type(const char *format, const char *hex, const char *p
|
||||
{
|
||||
struct argv_array argv = ARGV_ARRAY_INIT;
|
||||
const char **nargv;
|
||||
char *user_home, *xdg_home;
|
||||
int result;
|
||||
argv_array_push(&argv, "snapshot");
|
||||
argv_array_push(&argv, format);
|
||||
@ -38,7 +39,15 @@ static int write_archive_type(const char *format, const char *hex, const char *p
|
||||
/* argv_array guarantees a trailing NULL entry. */
|
||||
memcpy(nargv, argv.argv, sizeof(char *) * (argv.argc + 1));
|
||||
|
||||
user_home = getenv("HOME");
|
||||
xdg_home = getenv("XDG_CONFIG_HOME");
|
||||
unsetenv("HOME");
|
||||
unsetenv("XDG_CONFIG_HOME");
|
||||
result = write_archive(argv.argc, nargv, NULL, 1, NULL, 0);
|
||||
if (user_home)
|
||||
setenv("HOME", user_home, 1);
|
||||
if (xdg_home)
|
||||
setenv("XDG_CONFIG_HOME", xdg_home, 1);
|
||||
argv_array_clear(&argv);
|
||||
free(nargv);
|
||||
return result;
|
||||
|
Loading…
Reference in New Issue
Block a user