From 0e40b033b8533d1cb80cad0110f3e1233a1b3a66 Mon Sep 17 00:00:00 2001 From: NIIBE Yutaka Date: Fri, 22 Nov 2019 16:24:50 +0900 Subject: [PATCH] gpg: Fix for the condition calling gpg_sos_write. Signed-off-by: NIIBE Yutaka --- g10/build-packet.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-) diff --git a/g10/build-packet.c b/g10/build-packet.c index c1e5137cd..e6b09fb11 100644 --- a/g10/build-packet.c +++ b/g10/build-packet.c @@ -742,8 +742,17 @@ do_key (iobuf_t out, int ctb, PKT_public_key *pk) for (j=i; j < nskey; j++ ) { - if ((err = gpg_sos_write (NULL, pk->pkey[j], &n))) - goto leave; + if (pk->pubkey_algo == PUBKEY_ALGO_EDDSA + || pk->pubkey_algo == PUBKEY_ALGO_ECDH) + { + if ((err = gpg_sos_write (NULL, pk->pkey[j], &n))) + goto leave; + } + else + { + if ( (err = gpg_mpi_write (a, pk->pkey[i], NULL))) + goto leave; + } skbytes += n; } @@ -751,8 +760,15 @@ do_key (iobuf_t out, int ctb, PKT_public_key *pk) } for ( ; i < nskey; i++ ) - if ( (err = gpg_sos_write (a, pk->pkey[i], NULL))) - goto leave; + if (pk->pubkey_algo == PUBKEY_ALGO_EDDSA + || pk->pubkey_algo == PUBKEY_ALGO_ECDH) + { + if ( (err = gpg_sos_write (a, pk->pkey[i], NULL))) + goto leave; + } + else + if ( (err = gpg_mpi_write (a, pk->pkey[i], NULL))) + goto leave; write_16 (a, ski->csum ); }