Fix some more memory leaks with TXT_DB_insert.
authorBernd Edlinger <bernd.edlinger@hotmail.de>
Sun, 19 Feb 2017 19:47:45 +0000 (20:47 +0100)
committerRich Salz <rsalz@openssl.org>
Tue, 21 Feb 2017 19:36:40 +0000 (14:36 -0500)
Reviewed-by: Richard Levitte <levitte@openssl.org>
Reviewed-by: Rich Salz <rsalz@openssl.org>
(Merged from https://github.com/openssl/openssl/pull/2685)

apps/ca.c
apps/srp.c

index b9a66abccf0277bfe8e920090acfa7239bd4d454..f90f033baed375d35529d2daa0b0189076f253fc 100644 (file)
--- a/apps/ca.c
+++ b/apps/ca.c
@@ -2397,18 +2397,20 @@ static int do_revoke(X509 *x509, CA_DB *db, int type, char *value)
             goto err;
         }
 
-        for (i = 0; i < DB_NUMBER; i++) {
+        for (i = 0; i < DB_NUMBER; i++)
             irow[i] = row[i];
-            row[i] = NULL;
-        }
         irow[DB_NUMBER] = NULL;
 
         if (!TXT_DB_insert(db->db, irow)) {
             BIO_printf(bio_err, "failed to update database\n");
             BIO_printf(bio_err, "TXT_DB error number %ld\n", db->db->error);
+            OPENSSL_free(irow);
             goto err;
         }
 
+        for (i = 0; i < DB_NUMBER; i++)
+            row[i] = NULL;
+
         /* Revoke Certificate */
         if (type == -1)
             ok = 1;
index 37341a5d20ed6119b16245fe0c9df4bb38a2d91f..ce01a24f2a78c4b942231a9ccba019ef83453a3a 100644 (file)
@@ -183,10 +183,8 @@ static int update_index(CA_DB *db, BIO *bio, char **row)
         return 0;
     }
 
-    for (i = 0; i < DB_NUMBER; i++) {
+    for (i = 0; i < DB_NUMBER; i++)
         irow[i] = row[i];
-        row[i] = NULL;
-    }
     irow[DB_NUMBER] = NULL;
 
     if (!TXT_DB_insert(db->db, irow)) {