diff options
author | Andre Heinecke <[email protected]> | 2014-09-19 17:38:13 +0000 |
---|---|---|
committer | Werner Koch <[email protected]> | 2014-10-03 10:19:07 +0000 |
commit | a6fcdbc9e0fc0e45a3badc23813e689e83059b61 (patch) | |
tree | 6696e86689cb3770dd5f3bd360e7a998b721a995 /g10/migrate.c | |
parent | po: Auto update translations. (diff) | |
download | gnupg-a6fcdbc9e0fc0e45a3badc23813e689e83059b61.tar.gz gnupg-a6fcdbc9e0fc0e45a3badc23813e689e83059b61.zip |
gpg: Check gpg-agent version before 2.1 migration.
* g10/call-agent.c, g10/call-agent.h (agent_get_version): New.
* g10/migrate.c (migrate_secring): Abort migration if
agent_get_version returns not at least 2.1.0
--
GnuPG-bug-id: 1718
On the first installation of GnuPG 2.1 it is likely that an
old gpg-agent is still running in the environment. In that
case the migration would fail.
Signed-off-by: Andre Heinecke <[email protected]>
Diffstat (limited to '')
-rw-r--r-- | g10/migrate.c | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/g10/migrate.c b/g10/migrate.c index 9a21cfe8e..5cb3512d9 100644 --- a/g10/migrate.c +++ b/g10/migrate.c @@ -29,6 +29,7 @@ #include "keydb.h" #include "util.h" #include "main.h" +#include "call-agent.h" #ifdef HAVE_DOSISH_SYSTEM @@ -46,6 +47,7 @@ migrate_secring (ctrl_t ctrl) dotlock_t lockhd = NULL; char *secring = NULL; char *flagfile = NULL; + char *agent_version = NULL; secring = make_filename (opt.homedir, "secring" EXTSEP_S "gpg", NULL); if (access (secring, F_OK)) @@ -72,6 +74,27 @@ migrate_secring (ctrl_t ctrl) goto leave; } + if (!agent_get_version (ctrl, &agent_version)) + { + if (!gnupg_compare_version (agent_version, "2.1.0")) + { + log_error ("error: GnuPG agent version \"%s\" is too old. ", + agent_version); + log_error ("Please install an updated GnuPG agent.\n"); + log_error ("migration aborted\n"); + xfree (agent_version); + goto leave; + } + xfree (agent_version); + } + else + { + log_error ("error: GnuPG agent unusable. " + "Please check that a GnuPG agent can be started.\n"); + log_error ("migration aborted\n"); + goto leave; + } + log_info ("porting secret keys from '%s' to gpg-agent\n", secring); if (!import_old_secring (ctrl, secring)) { |