diff options
author | NIIBE Yutaka <[email protected]> | 2015-04-30 08:02:42 +0000 |
---|---|---|
committer | NIIBE Yutaka <[email protected]> | 2015-04-30 08:02:42 +0000 |
commit | 43429c7869152f301157e4b24790b3801dce0f0a (patch) | |
tree | 09cca158abea0f5f0d295bb3438423f35d9fc5e0 | |
parent | gpg: Emit status line NEWSIG before signature verification starts. (diff) | |
download | gnupg-43429c7869152f301157e4b24790b3801dce0f0a.tar.gz gnupg-43429c7869152f301157e4b24790b3801dce0f0a.zip |
g10: fix cmp_public_key and cmp_secret_keys.
* g10/free-packet.c (cmp_public_keys, cmp_secret_keys): Compare opaque
data at the first entry of the array when it's unknown algo.
* configure.ac (NEED_LIBGCRYPT_VERSION): Require 1.5.0.
--
GnuPG-bug-id: 1962
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | configure.ac | 2 | ||||
-rw-r--r-- | g10/free-packet.c | 24 |
3 files changed, 18 insertions, 10 deletions
@@ -1,6 +1,8 @@ Noteworthy changes in version 2.0.28 (unreleased) ------------------------------------------------- + * Libgcrypt 1.5 is now required. + Noteworthy changes in version 2.0.27 (2015-02-18) ------------------------------------------------- diff --git a/configure.ac b/configure.ac index abd95180a..c93e7626c 100644 --- a/configure.ac +++ b/configure.ac @@ -47,7 +47,7 @@ AC_INIT([gnupg],[mym4_full_version], [http://bugs.gnupg.org]) NEED_GPG_ERROR_VERSION=1.11 NEED_LIBGCRYPT_API=1 -NEED_LIBGCRYPT_VERSION=1.4.0 +NEED_LIBGCRYPT_VERSION=1.5.0 NEED_LIBASSUAN_API=2 NEED_LIBASSUAN_VERSION=2.0.0 diff --git a/g10/free-packet.c b/g10/free-packet.c index 85f23ce3f..9b42cfdaf 100644 --- a/g10/free-packet.c +++ b/g10/free-packet.c @@ -452,11 +452,14 @@ cmp_public_keys( PKT_public_key *a, PKT_public_key *b ) return -1; n = pubkey_get_npkey( b->pubkey_algo ); - if( !n ) - return -1; /* can't compare due to unknown algorithm */ - for(i=0; i < n; i++ ) { - if( mpi_cmp( a->pkey[i], b->pkey[i] ) ) - return -1; + if( !n ) { /* unknown algorithm, rest is in opaque MPI */ + if( mpi_cmp( a->pkey[0], b->pkey[0] ) ) + return -1; /* can't compare due to unknown algorithm */ + } else { + for(i=0; i < n; i++ ) { + if( mpi_cmp( a->pkey[i], b->pkey[i] ) ) + return -1; + } } return 0; @@ -479,11 +482,14 @@ cmp_secret_keys( PKT_secret_key *a, PKT_secret_key *b ) return -1; n = pubkey_get_npkey( b->pubkey_algo ); - if( !n ) - return -1; /* can't compare due to unknown algorithm */ - for(i=0; i < n; i++ ) { - if( mpi_cmp( a->skey[i], b->skey[i] ) ) + if( !n ) { /* unknown algorithm, rest is in opaque MPI */ + if( mpi_cmp( a->skey[0], b->skey[0] ) ) return -1; + } else { + for(i=0; i < n; i++ ) { + if( mpi_cmp( a->skey[i], b->skey[i] ) ) + return -1; + } } return 0; |