diff options
author | Marcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de> | 2017-07-24 16:31:55 +0200 |
---|---|---|
committer | Marcus Brinkmann <marcus.brinkmann@ruhr-uni-bochum.de> | 2017-07-24 16:31:55 +0200 |
commit | 78ebc62604d77600b9865950610717d28c6027a2 (patch) | |
tree | f7027a1ee81eb180eab71cf6ef32bf08da117d50 | |
parent | g10: Make sure to emit NEED_PASSPHRASE on --export-secret-key. (diff) | |
download | gnupg2-78ebc62604d77600b9865950610717d28c6027a2.tar.xz gnupg2-78ebc62604d77600b9865950610717d28c6027a2.zip |
w32: Change directory on daemon startup.
* agent/gpg-agent.c [HAVE_W32_SYSTEM]: Include <direct.h>.
(main) [HAVE_W32_SYSTEM]: Change working directory to \.
* dirmngr/dirmngr.c [HAVE_W32_SYSTEM]: Include <direct.h>.
(main) [HAVE_W32_SYSTEM]: Change working directory to \.
* scd/scdaemon.c [HAVE_W32_SYSTEM]: Include <direct.h>.
(main) [HAVE_W32_SYSTEM]: Change working directory to \.
Signed-off-by: Marcus Brinkmann <mb@g10code.com>
GnuPG-bug-id: 2670
-rw-r--r-- | agent/gpg-agent.c | 6 | ||||
-rw-r--r-- | dirmngr/dirmngr.c | 13 | ||||
-rw-r--r-- | scd/scdaemon.c | 13 |
3 files changed, 26 insertions, 6 deletions
diff --git a/agent/gpg-agent.c b/agent/gpg-agent.c index efaebfd94..90e8a2657 100644 --- a/agent/gpg-agent.c +++ b/agent/gpg-agent.c @@ -39,6 +39,7 @@ # endif # include <aclapi.h> # include <sddl.h> +# include <direct.h> #else /*!HAVE_W32_SYSTEM*/ # include <sys/socket.h> # include <sys/un.h> @@ -1558,6 +1559,11 @@ main (int argc, char **argv ) (void)csh_style; (void)nodetach; initialize_modules (); + if (_chdir("\\")) + { + log_error ("chdir to / failed: %s\n", strerror (errno)); + exit (1); + } #else /*!HAVE_W32_SYSTEM*/ diff --git a/dirmngr/dirmngr.c b/dirmngr/dirmngr.c index 6eabca9c3..b19b4180d 100644 --- a/dirmngr/dirmngr.c +++ b/dirmngr/dirmngr.c @@ -30,9 +30,11 @@ #include <assert.h> #include <time.h> #include <fcntl.h> -#ifndef HAVE_W32_SYSTEM -#include <sys/socket.h> -#include <sys/un.h> +#ifdef HAVE_W32_SYSTEM +# include <direct.h> +#else +# include <sys/socket.h> +# include <sys/un.h> #endif #include <sys/stat.h> #include <unistd.h> @@ -1268,6 +1270,11 @@ main (int argc, char **argv) #ifdef HAVE_W32_SYSTEM (void)csh_style; (void)nodetach; + if (_chdir("\\")) + { + log_error ("chdir to / failed: %s\n", strerror (errno)); + exit (1); + } pid = getpid (); es_printf ("set %s=%s;%lu;1\n", diff --git a/scd/scdaemon.c b/scd/scdaemon.c index 26e89dd8d..bbb043334 100644 --- a/scd/scdaemon.c +++ b/scd/scdaemon.c @@ -29,9 +29,11 @@ #include <assert.h> #include <time.h> #include <fcntl.h> -#ifndef HAVE_W32_SYSTEM -#include <sys/socket.h> -#include <sys/un.h> +#ifdef HAVE_W32_SYSTEM +# include <direct.h> +#else +# include <sys/socket.h> +# include <sys/un.h> #endif /*HAVE_W32_SYSTEM*/ #include <unistd.h> #include <signal.h> @@ -811,6 +813,11 @@ main (int argc, char **argv ) #ifdef HAVE_W32_SYSTEM (void)csh_style; (void)nodetach; + if (_chdir("\\")) + { + log_error ("chdir to / failed: %s\n", strerror (errno)); + exit (1); + } #else pid = fork (); if (pid == (pid_t)-1) |