mirror of
https://git.zx2c4.com/cgit
synced 2024-11-22 08:28:42 +00:00
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/commit
|
||||||
test_no_home_access_success foo/diff
|
test_no_home_access_success foo/diff
|
||||||
test_no_home_access_success foo/patch
|
test_no_home_access_success foo/patch
|
||||||
|
test_no_home_access_success foo/snapshot/master.tar.gz
|
||||||
|
|
||||||
test_done
|
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;
|
struct argv_array argv = ARGV_ARRAY_INIT;
|
||||||
const char **nargv;
|
const char **nargv;
|
||||||
|
char *user_home, *xdg_home;
|
||||||
int result;
|
int result;
|
||||||
argv_array_push(&argv, "snapshot");
|
argv_array_push(&argv, "snapshot");
|
||||||
argv_array_push(&argv, format);
|
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. */
|
/* argv_array guarantees a trailing NULL entry. */
|
||||||
memcpy(nargv, argv.argv, sizeof(char *) * (argv.argc + 1));
|
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);
|
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);
|
argv_array_clear(&argv);
|
||||||
free(nargv);
|
free(nargv);
|
||||||
return result;
|
return result;
|
||||||
|
Loading…
Reference in New Issue
Block a user