[Pkg-gnupg-commit] [gnupg2] 09/112: scd: Fix race conditions for release_application.

Daniel Kahn Gillmor dkg at fifthhorseman.net
Tue Aug 30 17:48:13 UTC 2016


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

dkg pushed a commit to branch master
in repository gnupg2.

commit 0c1fd4e9884ed7c1edd1819762b9e8a77f606ed3
Author: NIIBE Yutaka <gniibe at fsij.org>
Date:   Tue Jul 19 10:53:39 2016 +0900

    scd: Fix race conditions for release_application.
    
    * scd/command.c (do_reset, cmd_restart): Reset app_ctx before calling
    release_application.
    
    --
    
    Thanks to Ben Warren for the report.
    
    Signed-off-by: NIIBE Yutaka <gniibe at fsij.org>
---
 scd/command.c | 10 ++++++----
 1 file changed, 6 insertions(+), 4 deletions(-)

diff --git a/scd/command.c b/scd/command.c
index a4a2ba0..5842ee7 100644
--- a/scd/command.c
+++ b/scd/command.c
@@ -261,6 +261,7 @@ do_reset (ctrl_t ctrl, int send_reset)
   int vrdr = ctrl->server_local->vreader_idx;
   int slot;
   int err;
+  struct app_ctx_s *app = ctrl->app_ctx;
 
   if (!(vrdr == -1 || (vrdr >= 0 && vrdr < DIM(vreader_table))))
     BUG ();
@@ -268,10 +269,10 @@ do_reset (ctrl_t ctrl, int send_reset)
   /* If there is an active application, release it.  Tell all other
      sessions using the same application to release the
      application.  */
-  if (ctrl->app_ctx)
+  if (app)
     {
-      release_application (ctrl->app_ctx);
       ctrl->app_ctx = NULL;
+      release_application (app);
       if (send_reset)
         {
           struct server_local_s *sl;
@@ -1742,13 +1743,14 @@ static gpg_error_t
 cmd_restart (assuan_context_t ctx, char *line)
 {
   ctrl_t ctrl = assuan_get_pointer (ctx);
+  struct app_ctx_s *app = ctrl->app_ctx;
 
   (void)line;
 
-  if (ctrl->app_ctx)
+  if (app)
     {
-      release_application (ctrl->app_ctx);
       ctrl->app_ctx = NULL;
+      release_application (app);
     }
   if (locked_session && ctrl->server_local == locked_session)
     {

-- 
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