gpg: Avoid warnings about possible NULL deref.
authorWerner Koch <wk@gnupg.org>
Thu, 7 Jan 2016 18:05:35 +0000 (19:05 +0100)
committerWerner Koch <wk@gnupg.org>
Thu, 7 Jan 2016 18:09:16 +0000 (19:09 +0100)
* g10/getkey.c (cache_public_key): Protect deref of CE which actually
can't happen.
* g10/keygen.c (quickgen_set_para): s/sprintf/snprintf/.
* g10/tofu.c (end_transaction, rollback_transaction): Allow NULL for
DB.
* g10/trustdb.c (update_min_ownertrust): Remove useless clearling of
ERR.
--

Signed-off-by: Werner Koch <wk@gnupg.org>
g10/getkey.c
g10/keygen.c
g10/tofu.c
g10/trustdb.c

index 6a1fce6..e66be0d 100644 (file)
@@ -196,7 +196,7 @@ cache_public_key (PKT_public_key * pk)
       /* Remove the last 50% of the entries.  */
       for (ce = pk_cache, n = 0; ce && n < pk_cache_entries/2; n++)
         ce = ce->next;
-      if (ce != pk_cache && ce->next)
+      if (ce && ce != pk_cache && ce->next)
         {
           ce2 = ce->next;
           ce->next = NULL;
index 40619ca..94ea126 100644 (file)
@@ -3395,7 +3395,7 @@ quickgen_set_para (struct para_data_s *para, int for_subkey,
   para = r;
   r = xmalloc_clear (sizeof *r + 20);
   r->key = for_subkey? pSUBKEYTYPE : pKEYTYPE;
-  sprintf (r->u.value, "%d", algo);
+  snprintf (r->u.value, 20, "%d", algo);
   r->next = para;
   para = r;
 
index b7f61e9..903f076 100644 (file)
@@ -306,6 +306,9 @@ end_transaction (struct db *db, int only_batch)
   int rc;
   char *err = NULL;
 
+  if (!db)
+    return 0;  /* Shortcut to allow for easier cleanup code.  */
+
   if ((! batch_update || only_batch == 2) && db->batch_update)
     /* The batch transaction is still in open, but we left batch
        mode.  */
@@ -353,6 +356,9 @@ rollback_transaction (struct db *db)
   int rc;
   char *err = NULL;
 
+  if (!db)
+    return 0;  /* Shortcut to allow for easier cleanup code.  */
+
   if (db->batch_update)
     /* Just undo the most recent update; don't revert any progress
        made by the batch transaction.  */
index 9217dd9..cb2b5b9 100644 (file)
@@ -781,7 +781,6 @@ update_min_ownertrust (u32 *kid, unsigned int new_trust )
       write_record (&rec);
       tdb_revalidation_mark ();
       do_sync ();
-      err = 0;
     }
   else
     {