aboutsummaryrefslogtreecommitdiffstats
path: root/agent/command-ssh.c
diff options
context:
space:
mode:
authorWerner Koch <[email protected]>2016-08-09 15:44:54 +0000
committerWerner Koch <[email protected]>2016-08-09 15:44:54 +0000
commite630f904993725c54ec63be00369589b7b7234d2 (patch)
tree5b21846fcbef27ec2f69fb00fb3e707fd4518b92 /agent/command-ssh.c
parentgpg: Extend the PROGRESS line to give the used unit. (diff)
downloadgnupg-e630f904993725c54ec63be00369589b7b7234d2.tar.gz
gnupg-e630f904993725c54ec63be00369589b7b7234d2.zip
agent: Fix regression in recent ssh changes.
* agent/command-ssh.c (sexp_key_construct): Lowercase the algo name. -- We need to use a lowercase version of the algo in S-expression. Unfortunately Libgcrypt has no function for this, thus we need to malloc and first. Fixes-commit: ebf24e3 Signed-off-by: Werner Koch <[email protected]>
Diffstat (limited to '')
-rw-r--r--agent/command-ssh.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/agent/command-ssh.c b/agent/command-ssh.c
index b01cc067f..2def34290 100644
--- a/agent/command-ssh.c
+++ b/agent/command-ssh.c
@@ -1685,7 +1685,7 @@ sexp_key_construct (gcry_sexp_t *r_sexp,
void *formatbuf = NULL;
void **arg_list = NULL;
estream_t format = NULL;
-
+ char *algo_name = NULL;
if ((key_spec.flags & SPEC_FLAG_IS_EdDSA))
{
@@ -1723,7 +1723,6 @@ sexp_key_construct (gcry_sexp_t *r_sexp,
const char *elems;
size_t elems_n;
unsigned int i, j;
- const char *algo_name;
if (secret)
elems = key_spec.elems_sexp_order;
@@ -1750,7 +1749,13 @@ sexp_key_construct (gcry_sexp_t *r_sexp,
es_fputs ("(%s(%s", format);
arg_list[arg_idx++] = &key_identifier[secret];
- algo_name = gcry_pk_algo_name (key_spec.algo);
+ algo_name = xtrystrdup (gcry_pk_algo_name (key_spec.algo));
+ if (!algo_name)
+ {
+ err = gpg_error_from_syserror ();
+ goto out;
+ }
+ strlwr (algo_name);
arg_list[arg_idx++] = &algo_name;
if (curve_name)
{
@@ -1798,6 +1803,7 @@ sexp_key_construct (gcry_sexp_t *r_sexp,
es_fclose (format);
xfree (arg_list);
xfree (formatbuf);
+ xfree (algo_name);
return err;
}