aboutsummaryrefslogtreecommitdiffstats
path: root/g10/migrate.c
diff options
context:
space:
mode:
authorAndre Heinecke <[email protected]>2014-09-19 17:38:13 +0000
committerWerner Koch <[email protected]>2014-10-03 10:19:07 +0000
commita6fcdbc9e0fc0e45a3badc23813e689e83059b61 (patch)
tree6696e86689cb3770dd5f3bd360e7a998b721a995 /g10/migrate.c
parentpo: Auto update translations. (diff)
downloadgnupg-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.c23
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))
{