1
0
Fork 0
mirror of git://git.gnupg.org/gnupg.git synced 2025-07-02 22:46:30 +02:00

* exec.h, exec.c (set_exec_path, exec_write), g10.c (main): If

USE_EXEC_PATH is defined at compile time, use it to lock the exec-path and
not allow the user to change it.
This commit is contained in:
David Shaw 2002-07-03 04:01:21 +00:00
parent c6feade425
commit bccb780228
4 changed files with 30 additions and 9 deletions

View file

@ -51,6 +51,7 @@ int exec_write(struct exec_info **info,const char *program,
int exec_read(struct exec_info *info) { return G10ERR_GENERAL; }
int exec_finish(struct exec_info *info) { return G10ERR_GENERAL; }
int set_exec_path(const char *path) { return G10ERR_GENERAL; }
#else /* ! NO_EXEC */
@ -90,6 +91,19 @@ static int win_system(const char *command)
}
#endif
int set_exec_path(const char *path)
{
/* Notice that path is never freed. That is intentional due to the
way putenv() works. */
char *p=m_alloc(5+strlen(path)+1);
strcpy(p,"PATH=");
strcat(p,path);
if(putenv(p)!=0)
return G10ERR_GENERAL;
else
return 0;
}
/* Makes a temp directory and filenames */
static int make_tempdir(struct exec_info *info)
{
@ -298,6 +312,10 @@ int exec_write(struct exec_info **info,const char *program,
if(program==NULL && args_in==NULL)
BUG();
#ifdef USE_EXEC_PATH
set_exec_path(USE_EXEC_PATH);
#endif
*info=m_alloc_clear(sizeof(struct exec_info));
if(name)