mirror of
git://git.gnupg.org/gnupg.git
synced 2025-03-28 22:49:59 +01:00
* keyserver.c (keyserver_spawn): Don't mess about with the $PATH.
Rather, call keyserver helpers with the full path. This fixes some PATH-inspired DLL problems on W32. Noted by Carlo Luciano Bianco.
This commit is contained in:
parent
0fae3c3738
commit
14fdbdc97a
@ -1,3 +1,10 @@
|
|||||||
|
2005-03-30 David Shaw <dshaw@jabberwocky.com>
|
||||||
|
|
||||||
|
* keyserver.c (keyserver_spawn): Don't mess about with the $PATH.
|
||||||
|
Rather, call keyserver helpers with the full path. This fixes
|
||||||
|
some PATH-inspired DLL problems on W32. Noted by Carlo Luciano
|
||||||
|
Bianco.
|
||||||
|
|
||||||
2005-03-30 Werner Koch <wk@g10code.com>
|
2005-03-30 Werner Koch <wk@g10code.com>
|
||||||
|
|
||||||
* cardglue.c (pin_cb): Print a warning if the info string hack is
|
* cardglue.c (pin_cb): Print a warning if the info string hack is
|
||||||
|
@ -43,6 +43,8 @@
|
|||||||
#define SEND 1
|
#define SEND 1
|
||||||
#define SEARCH 2
|
#define SEARCH 2
|
||||||
|
|
||||||
|
#define GPGKEYS_PREFIX "gpgkeys_"
|
||||||
|
|
||||||
struct keyrec
|
struct keyrec
|
||||||
{
|
{
|
||||||
KEYDB_SEARCH_DESC desc;
|
KEYDB_SEARCH_DESC desc;
|
||||||
@ -860,20 +862,43 @@ keyserver_spawn(int action,STRLIST list,KEYDB_SEARCH_DESC *desc,
|
|||||||
opt.keyserver_options.options|=KEYSERVER_USE_TEMP_FILES;
|
opt.keyserver_options.options|=KEYSERVER_USE_TEMP_FILES;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* Push the libexecdir into path. If DISABLE_KEYSERVER_PATH is set,
|
|
||||||
use the 0 arg to replace the path. */
|
|
||||||
#ifdef DISABLE_KEYSERVER_PATH
|
|
||||||
set_exec_path(GNUPG_LIBEXECDIR,0);
|
|
||||||
#else
|
|
||||||
set_exec_path(GNUPG_LIBEXECDIR,opt.exec_path_set);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Build the filename for the helper to execute */
|
/* Build the filename for the helper to execute */
|
||||||
scheme=keyserver_typemap(keyserver->scheme);
|
scheme=keyserver_typemap(keyserver->scheme);
|
||||||
command=m_alloc(strlen("gpgkeys_")+strlen(scheme)+1);
|
|
||||||
strcpy(command,"gpgkeys_");
|
#ifdef DISABLE_KEYSERVER_PATH
|
||||||
|
/* Destroy any path we might have. This is a little tricky,
|
||||||
|
portability-wise. It's not correct to delete the PATH
|
||||||
|
environment variable, as that may fall back to a system built-in
|
||||||
|
PATH. Similarly, it is not correct to set PATH to the null
|
||||||
|
string (PATH="") since this actually deletes the PATH environment
|
||||||
|
variable under MinGW. The safest thing to do here is to force
|
||||||
|
PATH to be GNUPG_LIBEXECDIR. All this is not that meaningful on
|
||||||
|
Unix-like systems (since we're going to give a full path to
|
||||||
|
gpgkeys_foo), but on W32 it prevents loading any DLLs from
|
||||||
|
directories in %PATH%. */
|
||||||
|
set_exec_path(GNUPG_LIBEXECDIR,0);
|
||||||
|
#else
|
||||||
|
if(opt.exec_path_set)
|
||||||
|
{
|
||||||
|
/* If exec-path was set, and DISABLE_KEYSERVER_PATH is
|
||||||
|
undefined, then don't specify a full path to gpgkeys_foo, so
|
||||||
|
that the PATH can work. */
|
||||||
|
command=m_alloc(strlen(GPGKEYS_PREFIX)+strlen(scheme)+1);
|
||||||
|
command[0]='\0';
|
||||||
|
}
|
||||||
|
else
|
||||||
|
#endif
|
||||||
|
{
|
||||||
|
/* Specify a full path to gpgkeys_foo. */
|
||||||
|
command=m_alloc(strlen(GNUPG_LIBEXECDIR)+strlen(DIRSEP_S)+
|
||||||
|
strlen(GPGKEYS_PREFIX)+strlen(scheme)+1);
|
||||||
|
strcpy(command,GNUPG_LIBEXECDIR);
|
||||||
|
strcat(command,DIRSEP_S);
|
||||||
|
}
|
||||||
|
|
||||||
|
strcat(command,GPGKEYS_PREFIX);
|
||||||
strcat(command,scheme);
|
strcat(command,scheme);
|
||||||
|
|
||||||
if(opt.keyserver_options.options&KEYSERVER_USE_TEMP_FILES)
|
if(opt.keyserver_options.options&KEYSERVER_USE_TEMP_FILES)
|
||||||
{
|
{
|
||||||
if(opt.keyserver_options.options&KEYSERVER_KEEP_TEMP_FILES)
|
if(opt.keyserver_options.options&KEYSERVER_KEEP_TEMP_FILES)
|
||||||
@ -1334,7 +1359,8 @@ keyserver_work(int action,STRLIST list,KEYDB_SEARCH_DESC *desc,
|
|||||||
break;
|
break;
|
||||||
|
|
||||||
case KEYSERVER_VERSION_ERROR:
|
case KEYSERVER_VERSION_ERROR:
|
||||||
log_error(_("gpgkeys_%s does not support handler version %d\n"),
|
log_error(_(GPGKEYS_PREFIX "%s does not support"
|
||||||
|
" handler version %d\n"),
|
||||||
keyserver_typemap(keyserver->scheme),
|
keyserver_typemap(keyserver->scheme),
|
||||||
KEYSERVER_PROTO_VERSION);
|
KEYSERVER_PROTO_VERSION);
|
||||||
break;
|
break;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user