From 7a8d82b412ce2d56bb785157143d010dd04b5eb0 Mon Sep 17 00:00:00 2001 From: Moritz Schulte Date: Mon, 19 Jul 2004 16:21:18 +0000 Subject: [PATCH] 2004-07-19 Moritz Schulte * command-ssh.c (ssh_identity_register): passphrase must not be freed. --- agent/ChangeLog | 2 ++ agent/command-ssh.c | 23 +++++++++++++++++++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/agent/ChangeLog b/agent/ChangeLog index 7293e23ce..b80cbead2 100644 --- a/agent/ChangeLog +++ b/agent/ChangeLog @@ -1,5 +1,7 @@ 2004-07-19 Moritz Schulte + * command-ssh.c (ssh_identity_register): passphrase must not be freed. + * Makefile.am (gpg_agent_SOURCES): Adding: gpg-stream.c, gpg-stream.h, buffer.c, buffer.h, command-ssh.c. diff --git a/agent/command-ssh.c b/agent/command-ssh.c index cc8144e22..a487c9f06 100644 --- a/agent/command-ssh.c +++ b/agent/command-ssh.c @@ -486,14 +486,32 @@ ssh_receive_key_secret (gpg_stream_t stream, ssh_key_secret_t *key_secret) if (err) break; + log_debug ("key->p = "); + gcry_mpi_dump (key.material.rsa.p); + log_debug ("\n"); + log_debug ("key->q = "); + gcry_mpi_dump (key.material.rsa.q); + log_debug ("\n"); + log_debug ("key->u = "); + gcry_mpi_dump (key.material.rsa.iqmp); + log_debug ("\n"); + if (gcry_mpi_cmp (key.material.rsa.p, key.material.rsa.q)) { /* P shall be smaller then Q! */ gcry_mpi_t tmp = NULL; + log_debug ("p >= q! swapping primes.\n"); + tmp = key.material.rsa.p; key.material.rsa.p = key.material.rsa.q; key.material.rsa.q = tmp; + + gcry_mpi_invm (key.material.rsa.iqmp, key.material.rsa.p, key.material.rsa.q); + + log_debug ("new key->u = "); + gcry_mpi_dump (key.material.rsa.iqmp); + log_debug ("\n"); } break; @@ -1308,10 +1326,7 @@ ssh_identity_register (ssh_key_secret_t *key, int ttl) out: - if (passphrase) - gcry_free (passphrase); - if (buffer) - free (buffer); + free (buffer); return err; }