[Pkg-gnupg-commit] [gnupg2] 13/112: g10: Fix crash.

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 1af2fd44f0a66fd0d94c224319db0b128d42a288
Author: Justus Winter <justus at g10code.com>
Date:   Thu Jul 21 11:49:33 2016 +0200

    g10: Fix crash.
    
    * g10/tofu.c (tofu_closedbs): Fix freeing database handles up to the
    cache limit.  Previously, this would crash if db_cache_count == count.
    
    Reported-by: Ben Kibbey <bjk at luxsci.net>
    Signed-off-by: Justus Winter <justus at g10code.com>
---
 g10/tofu.c | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/g10/tofu.c b/g10/tofu.c
index 471aec6..0b9d848 100644
--- a/g10/tofu.c
+++ b/g10/tofu.c
@@ -1104,8 +1104,14 @@ tofu_closedbs (ctrl_t ctrl)
              is easy to skip the first COUNT entries since we still
              have a handle on the old head.  */
           int skip = DB_CACHE_ENTRIES - count;
-          while (-- skip > 0)
-            old_head = old_head->next;
+          if (skip < 0)
+            for (old_head = db_cache, skip = DB_CACHE_ENTRIES;
+                 skip > 0;
+                 old_head = old_head->next, skip--)
+              { /* Do nothing.  */ }
+          else
+            while (-- skip > 0)
+              old_head = old_head->next;
 
           *old_head->prevp = NULL;
 
@@ -1116,6 +1122,8 @@ tofu_closedbs (ctrl_t ctrl)
               old_head = db;
               db_cache_count --;
             }
+
+          log_assert (db_cache_count == DB_CACHE_ENTRIES);
         }
     }
 

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