g10: fix cmp_public_key and cmp_secret_keys.
authorNIIBE Yutaka <gniibe@fsij.org>
Thu, 30 Apr 2015 08:02:42 +0000 (17:02 +0900)
committerNIIBE Yutaka <gniibe@fsij.org>
Thu, 30 Apr 2015 08:02:42 +0000 (17:02 +0900)
* 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

NEWS
configure.ac
g10/free-packet.c

diff --git a/NEWS b/NEWS
index fe58b12..7b87ca9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -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)
 -------------------------------------------------
index abd9518..c93e762 100644 (file)
@@ -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
index 85f23ce..9b42cfd 100644 (file)
@@ -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;