[git] GnuPG - branch, master, updated. gnupg-2.1.19-104-g0039d71

by Werner Koch cvs at cvs.gnupg.org
Sat Apr 1 11:14:55 CEST 2017


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "The GNU Privacy Guard".

The branch, master has been updated
       via  0039d7107bcdfce6f3b02b46ff0495cfba07882a (commit)
       via  5556eca5acd46983bff0b38a1ffbc2f07fbaba9f (commit)
       via  aca5f494a88776d4974bfa9b0b65cb60c1b42040 (commit)
      from  3a10de3bfd785aefb0150e82b6dbbc7cb9f208c8 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 0039d7107bcdfce6f3b02b46ff0495cfba07882a
Author: Werner Koch <wk at gnupg.org>
Date:   Sat Apr 1 11:10:47 2017 +0200

    kbx: Unify blob reading functions.
    
    * kbx/keybox-file.c (_keybox_read_blob): Remove.
    (_keybox_read_blob2): Rename to ....
    (_keybox_read_blob): this.  Make arg options.  Change all callers.
    * kbx/keybox-search.c (keybox_search): Factor fopen call out to ...
    (open_file): new.
    (keybox_seek): Als use open_file.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/kbx/keybox-defs.h b/kbx/keybox-defs.h
index b8b8377..154d4fc 100644
--- a/kbx/keybox-defs.h
+++ b/kbx/keybox-defs.h
@@ -177,8 +177,7 @@ void _keybox_destroy_openpgp_info (keybox_openpgp_info_t info);
 
 
 /*-- keybox-file.c --*/
-int _keybox_read_blob (KEYBOXBLOB *r_blob, FILE *fp);
-int _keybox_read_blob2 (KEYBOXBLOB *r_blob, FILE *fp, int *skipped_deleted);
+int _keybox_read_blob (KEYBOXBLOB *r_blob, FILE *fp, int *skipped_deleted);
 int _keybox_write_blob (KEYBOXBLOB blob, FILE *fp);
 
 /*-- keybox-search.c --*/
diff --git a/kbx/keybox-dump.c b/kbx/keybox-dump.c
index d24f117..aa1d93b 100644
--- a/kbx/keybox-dump.c
+++ b/kbx/keybox-dump.c
@@ -581,7 +581,7 @@ _keybox_dump_file (const char *filename, int stats_only, FILE *outfp)
 
   for (;;)
     {
-      rc = _keybox_read_blob (&blob, fp);
+      rc = _keybox_read_blob (&blob, fp, NULL);
       if (gpg_err_code (rc) == GPG_ERR_TOO_LARGE
           && gpg_err_source (rc) == GPG_ERR_SOURCE_KEYBOX)
         {
@@ -704,7 +704,7 @@ _keybox_dump_find_dups (const char *filename, int print_them, FILE *outfp)
     }
   dupitems_count = 0;
 
-  while ( !(rc = _keybox_read_blob (&blob, fp)) )
+  while ( !(rc = _keybox_read_blob (&blob, fp, NULL)) )
     {
       unsigned char digest[20];
 
@@ -778,7 +778,7 @@ _keybox_dump_cut_records (const char *filename, unsigned long from,
   if (!(fp = open_file (&filename, stderr)))
     return gpg_error_from_syserror ();
 
-  while ( !(rc = _keybox_read_blob (&blob, fp)) )
+  while ( !(rc = _keybox_read_blob (&blob, fp, NULL)) )
     {
       if (recno > to)
         break; /* Ready.  */
diff --git a/kbx/keybox-file.c b/kbx/keybox-file.c
index 0485e81..046e321 100644
--- a/kbx/keybox-file.c
+++ b/kbx/keybox-file.c
@@ -45,10 +45,10 @@ ftello (FILE *stream)
 
 
 
-/* Read a block at the current position and return it in r_blob.
-   r_blob may be NULL to simply skip the current block.  */
+/* Read a block at the current position and return it in R_BLOB.
+   R_BLOB may be NULL to simply skip the current block.  */
 int
-_keybox_read_blob2 (KEYBOXBLOB *r_blob, FILE *fp, int *skipped_deleted)
+_keybox_read_blob (KEYBOXBLOB *r_blob, FILE *fp, int *skipped_deleted)
 {
   unsigned char *image;
   size_t imagelen = 0;
@@ -56,7 +56,8 @@ _keybox_read_blob2 (KEYBOXBLOB *r_blob, FILE *fp, int *skipped_deleted)
   int rc;
   off_t off;
 
-  *skipped_deleted = 0;
+  if (skipped_deleted)
+    *skipped_deleted = 0;
  again:
   if (r_blob)
     *r_blob = NULL;
@@ -86,7 +87,8 @@ _keybox_read_blob2 (KEYBOXBLOB *r_blob, FILE *fp, int *skipped_deleted)
       /* Special treatment for empty blobs. */
       if (fseek (fp, imagelen-5, SEEK_CUR))
         return gpg_error_from_syserror ();
-      *skipped_deleted = 1;
+      if (skipped_deleted)
+        *skipped_deleted = 1;
       goto again;
     }
 
@@ -99,6 +101,14 @@ _keybox_read_blob2 (KEYBOXBLOB *r_blob, FILE *fp, int *skipped_deleted)
       return gpg_error (GPG_ERR_TOO_LARGE);
     }
 
+  if (!r_blob)
+    {
+      /* This blob shall be skipped.  */
+      if (fseek (fp, imagelen-5, SEEK_CUR))
+        return gpg_error_from_syserror ();
+      return 0;
+    }
+
   image = xtrymalloc (imagelen);
   if (!image)
     return gpg_error_from_syserror ();
@@ -111,19 +121,12 @@ _keybox_read_blob2 (KEYBOXBLOB *r_blob, FILE *fp, int *skipped_deleted)
       return tmperr;
     }
 
-  rc = r_blob? _keybox_new_blob (r_blob, image, imagelen, off) : 0;
-  if (rc || !r_blob)
+  rc = _keybox_new_blob (r_blob, image, imagelen, off);
+  if (rc)
     xfree (image);
   return rc;
 }
 
-int
-_keybox_read_blob (KEYBOXBLOB *r_blob, FILE *fp)
-{
-  int dummy;
-  return _keybox_read_blob2 (r_blob, fp, &dummy);
-}
-
 
 /* Write the block to the current file position */
 int
diff --git a/kbx/keybox-search.c b/kbx/keybox-search.c
index 0bd4e01..a5fc7fa 100644
--- a/kbx/keybox-search.c
+++ b/kbx/keybox-search.c
@@ -725,6 +725,23 @@ release_sn_array (struct sn_array_s *array, size_t size)
   xfree (array);
 }
 
+
+/* Helper to open the file.  */
+static gpg_error_t
+open_file (KEYBOX_HANDLE hd)
+{
+
+  hd->fp = fopen (hd->kb->fname, "rb");
+  if (!hd->fp)
+    {
+      hd->error = gpg_error_from_syserror ();
+      return hd->error;
+    }
+
+  return 0;
+}
+
+
 

 /*
 
@@ -822,12 +839,11 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc,
 
   if (!hd->fp)
     {
-      hd->fp = fopen (hd->kb->fname, "rb");
-      if (!hd->fp)
+      rc = open_file (hd);
+      if (rc)
         {
-          hd->error = gpg_error_from_syserror ();
           xfree (sn_array);
-          return hd->error;
+          return rc;
         }
     }
 
@@ -899,7 +915,7 @@ keybox_search (KEYBOX_HANDLE hd, KEYBOX_SEARCH_DESC *desc, size_t ndesc,
       int blobtype;
 
       _keybox_release_blob (blob); blob = NULL;
-      rc = _keybox_read_blob (&blob, hd->fp);
+      rc = _keybox_read_blob (&blob, hd->fp, NULL);
       if (gpg_err_code (rc) == GPG_ERR_TOO_LARGE
           && gpg_err_source (rc) == GPG_ERR_SOURCE_KEYBOX)
         {
@@ -1192,24 +1208,23 @@ keybox_offset (KEYBOX_HANDLE hd)
 gpg_error_t
 keybox_seek (KEYBOX_HANDLE hd, off_t offset)
 {
-  int err;
+  gpg_error_t err;
 
   if (hd->error)
     return hd->error; /* still in error state */
 
   if (! hd->fp)
     {
-      if (offset == 0)
-        /* No need to open the file.  An unopened file is effectively at
-           offset 0.  */
-        return 0;
-
-      hd->fp = fopen (hd->kb->fname, "rb");
-      if (!hd->fp)
+      if (!offset)
         {
-          hd->error = gpg_error_from_syserror ();
-          return hd->error;
+          /* No need to open the file.  An unopened file is effectively at
+             offset 0.  */
+          return 0;
         }
+
+      err = open_file (hd);
+      if (err)
+        return err;
     }
 
   err = fseeko (hd->fp, offset, SEEK_SET);
diff --git a/kbx/keybox-update.c b/kbx/keybox-update.c
index 0b0f56b..580330f 100644
--- a/kbx/keybox-update.c
+++ b/kbx/keybox-update.c
@@ -288,7 +288,7 @@ blob_filecopy (int mode, const char *fname, KEYBOXBLOB blob,
         }
 
       /* Skip this blob. */
-      rc = _keybox_read_blob (NULL, fp);
+      rc = _keybox_read_blob (NULL, fp, NULL);
       if (rc)
         {
           fclose (fp);
@@ -665,7 +665,7 @@ keybox_compress (KEYBOX_HANDLE hd)
 
   /* A quick test to see if we need to compress the file at all.  We
      schedule a compress run after 3 hours. */
-  if ( !_keybox_read_blob (&blob, fp) )
+  if ( !_keybox_read_blob (&blob, fp, NULL) )
     {
       const unsigned char *buffer;
       size_t length;
@@ -703,7 +703,7 @@ keybox_compress (KEYBOX_HANDLE hd)
   cut_time = time(NULL) - 86400;
   first_blob = 1;
   skipped_deleted = 0;
-  for (rc=0; !(read_rc = _keybox_read_blob2 (&blob, fp, &skipped_deleted));
+  for (rc=0; !(read_rc = _keybox_read_blob (&blob, fp, &skipped_deleted));
        _keybox_release_blob (blob), blob = NULL )
     {
       unsigned int blobflags;

commit 5556eca5acd46983bff0b38a1ffbc2f07fbaba9f
Author: Werner Koch <wk at gnupg.org>
Date:   Fri Mar 31 20:44:05 2017 +0200

    gpg: Avoid multiple open calls to the keybox file.
    
    * g10/keydb.h (KEYDB_HANDLE): Move typedef to ...
    * g10/gpg.h: here.
    (struct server_control_s): Add field 'cached_getkey_kdb'.
    * g10/gpg.c (gpg_deinit_default_ctrl): Release that keydb handle.
    * g10/getkey.c (getkey_end): Cache keydb handle.
    (get_pubkey): Use cached keydb handle.
    * kbx/keybox-search.c (keybox_search_reset): Use lseek instead of
    closing the file.
    --
    
    Before this patch a "gpg --check-sigs" opened and closed the keybox
    file for almost every signature check.  By caching the keydb handle
    and using lseek(2) this can be limited to just 2 times.  This might
    speed up things on Windows.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/g10/getkey.c b/g10/getkey.c
index d8a1058..dab63fa 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -736,11 +736,21 @@ get_pubkey (ctrl_t ctrl, PKT_public_key * pk, u32 * keyid)
     memset (&ctx, 0, sizeof ctx);
     ctx.exact = 1; /* Use the key ID exactly as given.  */
     ctx.not_allocated = 1;
-    ctx.kr_handle = keydb_new ();
-    if (!ctx.kr_handle)
+
+    if (ctrl && ctrl->cached_getkey_kdb)
+      {
+        ctx.kr_handle = ctrl->cached_getkey_kdb;
+        ctrl->cached_getkey_kdb = NULL;
+        keydb_search_reset (ctx.kr_handle);
+      }
+    else
       {
-        rc = gpg_error_from_syserror ();
-        goto leave;
+        ctx.kr_handle = keydb_new ();
+        if (!ctx.kr_handle)
+          {
+            rc = gpg_error_from_syserror ();
+            goto leave;
+          }
       }
     ctx.nitems = 1;
     ctx.items[0].mode = KEYDB_SEARCH_MODE_LONG_KID;
@@ -2208,7 +2218,10 @@ getkey_end (ctrl_t ctrl, getkey_ctx_t ctx)
 {
   if (ctx)
     {
-      keydb_release (ctx->kr_handle);
+      if (ctrl && !ctrl->cached_getkey_kdb)
+        ctrl->cached_getkey_kdb = ctx->kr_handle;
+      else
+        keydb_release (ctx->kr_handle);
       free_strlist (ctx->extra_list);
       if (!ctx->not_allocated)
 	xfree (ctx);
diff --git a/g10/gpg.c b/g10/gpg.c
index 24636aa..e228427 100644
--- a/g10/gpg.c
+++ b/g10/gpg.c
@@ -2195,6 +2195,8 @@ gpg_deinit_default_ctrl (ctrl_t ctrl)
   tofu_closedbs (ctrl);
 #endif
   gpg_dirmngr_deinit_session_data (ctrl);
+
+  keydb_release (ctrl->cached_getkey_kdb);
 }
 
 
diff --git a/g10/gpg.h b/g10/gpg.h
index c663585..9b8b77c 100644
--- a/g10/gpg.h
+++ b/g10/gpg.h
@@ -59,10 +59,13 @@ struct server_local_s;
 struct dirmngr_local_s;
 typedef struct dirmngr_local_s *dirmngr_local_t;
 
-/* Object used to describe a keyblok node.  */
+/* Object used to describe a keyblock node.  */
 typedef struct kbnode_struct *KBNODE;   /* Deprecated use kbnode_t. */
 typedef struct kbnode_struct *kbnode_t;
 
+/* The handle for keydb operations.  */
+typedef struct keydb_handle *KEYDB_HANDLE;
+
 /* TOFU database meta object.  */
 struct tofu_dbs_s;
 typedef struct tofu_dbs_s *tofu_dbs_t;
@@ -94,6 +97,8 @@ struct server_control_s
     int batch_updated_wanted;
   } tofu;
 
+  /* This is used to cache a key data base handle.  */
+  KEYDB_HANDLE cached_getkey_kdb;
 };
 
 
diff --git a/g10/keydb.h b/g10/keydb.h
index 271e68f..7f42738 100644
--- a/g10/keydb.h
+++ b/g10/keydb.h
@@ -109,9 +109,6 @@ struct pubkey_find_info {
 };
 
 
-typedef struct keydb_handle *KEYDB_HANDLE;
-
-
 /* Helper type for preference fucntions. */
 union pref_hint
 {
diff --git a/kbx/keybox-search.c b/kbx/keybox-search.c
index 56515d1..0bd4e01 100644
--- a/kbx/keybox-search.c
+++ b/kbx/keybox-search.c
@@ -746,8 +746,13 @@ keybox_search_reset (KEYBOX_HANDLE hd)
 
   if (hd->fp)
     {
-      fclose (hd->fp);
-      hd->fp = NULL;
+      if (fseeko (hd->fp, 0, SEEK_SET))
+        {
+          /* Ooops.  Seek did not work.  Close so that the search will
+           * open the file again.  */
+          fclose (hd->fp);
+          hd->fp = NULL;
+        }
     }
   hd->error = 0;
   hd->eof = 0;

commit aca5f494a88776d4974bfa9b0b65cb60c1b42040
Author: Werner Koch <wk at gnupg.org>
Date:   Fri Mar 31 20:35:28 2017 +0200

    gpg: Pass CTRL also to getkey_end.
    
    * g10/getkey.c (getkey_end): Add arg CTRL.  Change all callers.
    
    Signed-off-by: Werner Koch <wk at gnupg.org>

diff --git a/g10/export.c b/g10/export.c
index 8dafab2..31caa55 100644
--- a/g10/export.c
+++ b/g10/export.c
@@ -2155,7 +2155,7 @@ export_ssh_key (ctrl_t ctrl, const char *userid)
           else if (gpg_err_code (err) == GPG_ERR_NO_PUBKEY)
             err = 0;
         }
-      getkey_end (getkeyctx);
+      getkey_end (ctrl, getkeyctx);
     }
   if (err)
     {
diff --git a/g10/getkey.c b/g10/getkey.c
index f29c150..d8a1058 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -558,7 +558,7 @@ get_pubkeys (ctrl_t ctrl,
       results = r;
     }
   while (ctx);
-  getkey_end (ctx);
+  getkey_end (ctrl, ctx);
 
   if (DBG_LOOKUP)
     {
@@ -752,7 +752,7 @@ get_pubkey (ctrl_t ctrl, PKT_public_key * pk, u32 * keyid)
       {
 	pk_from_block (pk, kb, found_key);
       }
-    getkey_end (&ctx);
+    getkey_end (ctrl, &ctx);
     release_kbnode (kb);
   }
   if (!rc)
@@ -868,7 +868,7 @@ get_pubkeyblock (ctrl_t ctrl, u32 * keyid)
   ctx.items[0].u.kid[0] = keyid[0];
   ctx.items[0].u.kid[1] = keyid[1];
   rc = lookup (ctrl, &ctx, 0, &keyblock, NULL);
-  getkey_end (&ctx);
+  getkey_end (ctrl, &ctx);
 
   return rc ? NULL : keyblock;
 }
@@ -915,7 +915,7 @@ get_seckey (ctrl_t ctrl, PKT_public_key *pk, u32 *keyid)
     {
       pk_from_block (pk, keyblock, found_key);
     }
-  getkey_end (&ctx);
+  getkey_end (ctrl, &ctx);
   release_kbnode (keyblock);
 
   if (!err)
@@ -1109,7 +1109,7 @@ key_byname (ctrl_t ctrl, GETKEY_CTX *retctx, strlist_t namelist,
   if (!ctx->kr_handle)
     {
       rc = gpg_error_from_syserror ();
-      getkey_end (ctx);
+      getkey_end (ctrl, ctx);
       return rc;
     }
 
@@ -1138,7 +1138,7 @@ key_byname (ctrl_t ctrl, GETKEY_CTX *retctx, strlist_t namelist,
 	  *ret_kdbhd = ctx->kr_handle;
 	  ctx->kr_handle = NULL;
 	}
-      getkey_end (ctx);
+      getkey_end (ctrl, ctx);
     }
 
   return rc;
@@ -1310,7 +1310,7 @@ get_pubkey_byname (ctrl_t ctrl, GETKEY_CTX * retctx, PKT_public_key * pk,
 	      did_akl_local = 1;
 	      if (retctx)
 		{
-		  getkey_end (*retctx);
+		  getkey_end (ctrl, *retctx);
 		  *retctx = NULL;
 		}
 	      add_to_strlist (&namelist, name);
@@ -1428,7 +1428,7 @@ get_pubkey_byname (ctrl_t ctrl, GETKEY_CTX * retctx, PKT_public_key * pk,
 	       * keyring.  */
 	      if (retctx)
 		{
-		  getkey_end (*retctx);
+		  getkey_end (ctrl, *retctx);
 		  *retctx = NULL;
 		}
 	      rc = key_byname (ctrl, anylocalfirst ? retctx : NULL,
@@ -1453,7 +1453,7 @@ get_pubkey_byname (ctrl_t ctrl, GETKEY_CTX * retctx, PKT_public_key * pk,
 
   if (rc && retctx)
     {
-      getkey_end (*retctx);
+      getkey_end (ctrl, *retctx);
       *retctx = NULL;
     }
 
@@ -1589,7 +1589,7 @@ get_best_pubkey_byname (ctrl_t ctrl, GETKEY_CTX *retctx, PKT_public_key *pk,
   if (rc)
     {
       if (ctx)
-        getkey_end (ctx);
+        getkey_end (ctrl, ctx);
       return rc;
     }
 
@@ -1626,7 +1626,7 @@ get_best_pubkey_byname (ctrl_t ctrl, GETKEY_CTX *retctx, PKT_public_key *pk,
               new.uid = NULL;
             }
         }
-      getkey_end (ctx);
+      getkey_end (ctrl, ctx);
       ctx = NULL;
       free_user_id (best.uid);
       best.uid = NULL;
@@ -1675,14 +1675,14 @@ get_best_pubkey_byname (ctrl_t ctrl, GETKEY_CTX *retctx, PKT_public_key *pk,
 
   if (rc && ctx)
     {
-      getkey_end (ctx);
+      getkey_end (ctrl, ctx);
       ctx = NULL;
     }
 
   if (retctx && ctx)
     *retctx = ctx;
   else
-    getkey_end (ctx);
+    getkey_end (ctrl, ctx);
 
   return rc;
 }
@@ -1799,7 +1799,7 @@ get_pubkey_byfprint (ctrl_t ctrl, PKT_public_key *pk, kbnode_t *r_keyblock,
 	  kb = NULL;
 	}
       release_kbnode (kb);
-      getkey_end (&ctx);
+      getkey_end (ctrl, &ctx);
     }
   else
     rc = GPG_ERR_GENERAL; /* Oops */
@@ -2204,7 +2204,7 @@ getkey_next (ctrl_t ctrl, getkey_ctx_t ctx,
 /* Release any resources used by a key listing context.  This must be
  * called on the context returned by, e.g., getkey_byname.  */
 void
-getkey_end (getkey_ctx_t ctx)
+getkey_end (ctrl_t ctrl, getkey_ctx_t ctx)
 {
   if (ctx)
     {
@@ -3833,7 +3833,7 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
     {
       /* Free the context.  */
       release_kbnode (c->keyblock);
-      getkey_end (c->ctx);
+      getkey_end (ctrl, c->ctx);
       xfree (c);
       *context = NULL;
       return 0;
@@ -3881,7 +3881,7 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
                     {
                       release_kbnode (keyblock);
                       keyblock = NULL;
-                      getkey_end (c->ctx);
+                      getkey_end (ctrl, c->ctx);
                       c->ctx = NULL;
                     }
                   c->state++;
@@ -3895,7 +3895,7 @@ enum_secret_keys (ctrl_t ctrl, void **context, PKT_public_key *sk)
                         {
                           release_kbnode (keyblock);
                           keyblock = NULL;
-                          getkey_end (c->ctx);
+                          getkey_end (ctrl, c->ctx);
                           c->ctx = NULL;
                         }
                     }
diff --git a/g10/keydb.h b/g10/keydb.h
index 605964d..271e68f 100644
--- a/g10/keydb.h
+++ b/g10/keydb.h
@@ -372,7 +372,7 @@ gpg_error_t getkey_next (ctrl_t ctrl, getkey_ctx_t ctx,
                          PKT_public_key *pk, kbnode_t *ret_keyblock);
 
 /* Release any resources used by a key listing context.  */
-void getkey_end (getkey_ctx_t ctx);
+void getkey_end (ctrl_t ctrl, getkey_ctx_t ctx);
 
 /* Return the database handle used by this context.  The context still
    owns the handle.  */
diff --git a/g10/keylist.c b/g10/keylist.c
index cc5009d..2b6ee9f 100644
--- a/g10/keylist.c
+++ b/g10/keylist.c
@@ -608,7 +608,7 @@ list_one (ctrl_t ctrl, strlist_t names, int secret, int mark_secret)
   if (rc)
     {
       log_error ("error reading key: %s\n", gpg_strerror (rc));
-      getkey_end (ctx);
+      getkey_end (ctrl, ctx);
       return;
     }
 
@@ -627,7 +627,7 @@ list_one (ctrl_t ctrl, strlist_t names, int secret, int mark_secret)
       release_kbnode (keyblock);
     }
   while (!getkey_next (ctrl, ctx, NULL, &keyblock));
-  getkey_end (ctx);
+  getkey_end (ctrl, ctx);
 
   if (opt.check_sigs && !opt.with_colons)
     print_signature_stats (&listctx);
@@ -668,7 +668,7 @@ locate_one (ctrl_t ctrl, strlist_t names)
 	      release_kbnode (keyblock);
 	    }
 	  while (ctx && !getkey_next (ctrl, ctx, NULL, &keyblock));
-	  getkey_end (ctx);
+	  getkey_end (ctrl, ctx);
 	  ctx = NULL;
 	}
     }

-----------------------------------------------------------------------

Summary of changes:
 g10/export.c        |  2 +-
 g10/getkey.c        | 59 ++++++++++++++++++++++++++++++++---------------------
 g10/gpg.c           |  2 ++
 g10/gpg.h           |  7 ++++++-
 g10/keydb.h         |  5 +----
 g10/keylist.c       |  6 +++---
 kbx/keybox-defs.h   |  3 +--
 kbx/keybox-dump.c   |  6 +++---
 kbx/keybox-file.c   | 31 +++++++++++++++-------------
 kbx/keybox-search.c | 54 +++++++++++++++++++++++++++++++++---------------
 kbx/keybox-update.c |  6 +++---
 11 files changed, 110 insertions(+), 71 deletions(-)


hooks/post-receive
-- 
The GNU Privacy Guard
http://git.gnupg.org




More information about the Gnupg-commits mailing list