[Pkg-gnupg-commit] [gnupg2] 51/185: gpg: Disable keydb handle caching only for W32

Daniel Kahn Gillmor dkg at fifthhorseman.net
Mon Aug 7 11:55:19 UTC 2017


This is an automated email from the git hooks/post-receive script.

dkg pushed a commit to branch experimental
in repository gnupg2.

commit e80925171ddb20c7e76c1db88c15ce2d9b09db86
Author: Werner Koch <wk at gnupg.org>
Date:   Tue Jun 13 09:05:40 2017 +0200

    gpg: Disable keydb handle caching only for W32
    
    * g10/getkey.c (getkey_end) [!W32]: Re-enable caching.
    --
    
    This change limits of the effects of commit
    d3d640b9cc98dd0d06b49a2e4d46eb67af96fe29 to W32 system.
    
    GnuPG-bug-id: 3097
    Signed-off-by: Werner Koch <wk at gnupg.org>
---
 g10/getkey.c | 27 +++++++++++++++++----------
 1 file changed, 17 insertions(+), 10 deletions(-)

diff --git a/g10/getkey.c b/g10/getkey.c
index ac6b9a3..a3df857 100644
--- a/g10/getkey.c
+++ b/g10/getkey.c
@@ -2219,20 +2219,27 @@ getkey_end (ctrl_t ctrl, getkey_ctx_t ctx)
 {
   if (ctx)
     {
-/*
-XXX: This creates a big regression for Windows because the keyring
-* is only released after the global ctrl is released. So if an operation
-* does a getkey and then tries to modify the keyring it will fail on
-* Windows with a sharing violation. We need to modify all
-* keyring write operations to also take the ctrl and close the
-* cached_getkey_kdb handle to make writing work. See:
-* https://dev.gnupg.org/T3097
+#ifdef HAVE_W32_SYSTEM
+
+      /* FIXME: This creates a big regression for Windows because the
+       * keyring is only released after the global ctrl is released.
+       * So if an operation does a getkey and then tries to modify the
+       * keyring it will fail on Windows with a sharing violation.  We
+       * need to modify all keyring write operations to also take the
+       * ctrl and close the cached_getkey_kdb handle to make writing
+       * work.  See: GnuPG-bug-id: 3097  */
+      (void)ctrl;
+      keydb_release (ctx->kr_handle);
+
+#else /*!HAVE_W32_SYSTEM*/
 
       if (ctrl && !ctrl->cached_getkey_kdb)
         ctrl->cached_getkey_kdb = ctx->kr_handle;
       else
-*/
-      keydb_release (ctx->kr_handle);
+        keydb_release (ctx->kr_handle);
+
+#endif /*!HAVE_W32_SYSTEM*/
+
       free_strlist (ctx->extra_list);
       if (!ctx->not_allocated)
 	xfree (ctx);

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/gnupg2.git



More information about the Pkg-gnupg-commit mailing list