free NULL cleanup 9
authorRich Salz <rsalz@openssl.org>
Sat, 11 Apr 2015 20:32:54 +0000 (16:32 -0400)
committerRich Salz <rsalz@openssl.org>
Sat, 11 Apr 2015 20:32:54 +0000 (16:32 -0400)
Ongoing work to skip NULL check before calling free routine.  This gets:
    ecp_nistz256_pre_comp_free nistp224_pre_comp_free nistp256_pre_comp_free
    nistp521_pre_comp_free PKCS7_free PKCS7_RECIP_INFO_free
    PKCS7_SIGNER_INFO_free sk_PKCS7_pop_free PKCS8_PRIV_KEY_INFO_free
    PKCS12_free PKCS12_SAFEBAG_free PKCS12_free sk_PKCS12_SAFEBAG_pop_free
    SSL_CONF_CTX_free SSL_CTX_free SSL_SESSION_free SSL_free ssl_cert_free
    ssl_sess_cert_free

Reviewed-by: Kurt Roeckx <kurt@openssl.org>
20 files changed:
apps/apps.c
apps/crl2p7.c
apps/pkcs12.c
apps/pkcs7.c
crypto/ec/ecp_nistp224.c
crypto/ec/ecp_nistp256.c
crypto/ec/ecp_nistp521.c
crypto/ec/ecp_nistz256.c
crypto/pkcs12/p12_crt.c
crypto/pkcs12/p12_init.c
crypto/pkcs7/pk7_lib.c
demos/smime/smdec.c
demos/smime/smenc.c
demos/smime/smsign.c
demos/smime/smsign2.c
demos/smime/smver.c
ssl/ssl_lib.c
ssl/ssl_sess.c
test/evp_extra_test.c
test/ssltest.c

index 1dcaabf87d6dfd1fabe988b203491e24b6a36f7f..65d4e46d576a87517c89767bca9cb20cbc081c5f 100644 (file)
@@ -786,8 +786,7 @@ static int load_pkcs12(BIO *err, BIO *in, const char *desc,
     }
     ret = PKCS12_parse(p12, pass, pkey, cert, ca);
  die:
-    if (p12)
-        PKCS12_free(p12);
+    PKCS12_free(p12);
     return ret;
 }
 
index ab0c3d6d287f548aa6741ea420e7bb70b07638ba..86b3a947606552b36a74524cc6065498bb05c8c6 100644 (file)
@@ -270,8 +270,7 @@ int MAIN(int argc, char **argv)
  end:
     BIO_free(in);
     BIO_free_all(out);
-    if (p7 != NULL)
-        PKCS7_free(p7);
+    PKCS7_free(p7);
     if (crl != NULL)
         X509_CRL_free(crl);
 
index a60a055040196cf68003de5fe71d213119169d04..43892e57985b04b5c8a3e9a486eafe01a7675c01 100644 (file)
@@ -740,8 +740,7 @@ int MAIN(int argc, char **argv)
 # endif
     ret = 0;
  end:
-    if (p12)
-        PKCS12_free(p12);
+    PKCS12_free(p12);
     if (export_cert || inrand)
         app_RAND_write_file(NULL, bio_err);
 # ifdef CRYPTO_MDEBUG
@@ -798,9 +797,7 @@ int dump_certs_keys_p12(BIO *out, PKCS12 *p12, char *pass,
     ret = 1;
 
  err:
-
-    if (asafes)
-        sk_PKCS7_pop_free(asafes, PKCS7_free);
+    sk_PKCS7_pop_free(asafes, PKCS7_free);
     return ret;
 }
 
index 1b07c022a4fee310d394a1e9d21d3dd353f1486d..4fcb089b2b490a72e08404771130c94825f06dba 100644 (file)
@@ -297,8 +297,7 @@ int MAIN(int argc, char **argv)
     }
     ret = 0;
  end:
-    if (p7 != NULL)
-        PKCS7_free(p7);
+    PKCS7_free(p7);
     BIO_free(in);
     BIO_free_all(out);
     apps_shutdown();
index 2f1213f1f778ff6b1a3decd291472a438b55d6ac..76adc8a6d1f3f984117906ba7e7b903943d35663 100644 (file)
@@ -1741,8 +1741,7 @@ int ec_GFp_nistp224_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
     EC_POINT_free(generator);
     if (new_ctx != NULL)
         BN_CTX_free(new_ctx);
-    if (pre)
-        nistp224_pre_comp_free(pre);
+    nistp224_pre_comp_free(pre);
     return ret;
 }
 
index 9ec034669abd2733360846f380e69d7dfc846182..794520e99abaff67a25cc0e2fe3e73219d28d836 100644 (file)
@@ -2342,8 +2342,7 @@ int ec_GFp_nistp256_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
     EC_POINT_free(generator);
     if (new_ctx != NULL)
         BN_CTX_free(new_ctx);
-    if (pre)
-        nistp256_pre_comp_free(pre);
+    nistp256_pre_comp_free(pre);
     return ret;
 }
 
index c8f9d1e78d4d3273355f8c5361064d7a0af59b70..7ceb1bcbfa40a2d1536fdb5aa5e516c91bfd53c9 100644 (file)
@@ -2125,8 +2125,7 @@ int ec_GFp_nistp521_precompute_mult(EC_GROUP *group, BN_CTX *ctx)
     EC_POINT_free(generator);
     if (new_ctx != NULL)
         BN_CTX_free(new_ctx);
-    if (pre)
-        nistp521_pre_comp_free(pre);
+    nistp521_pre_comp_free(pre);
     return ret;
 }
 
index ea692b81ef283d4cbf03cd0942a6b64b27c06c8f..de9fbea5151f0601fc8cbd88444da64b0b010220 100644 (file)
@@ -870,8 +870,7 @@ static int ecp_nistz256_mult_precompute(EC_GROUP *group, BN_CTX *ctx)
  err:
     if (ctx != NULL)
         BN_CTX_end(ctx);
-    if (pre_comp)
-        ecp_nistz256_pre_comp_free(pre_comp);
+    ecp_nistz256_pre_comp_free(pre_comp);
     if (precomp_storage)
         OPENSSL_free(precomp_storage);
     EC_POINT_free(P);
index 1b2e889eaf888a922102fb7d3b040d8b0141b662..fcc77cd2fc9ca6f5f2d9d9dd1a7ea50037862411 100644 (file)
@@ -173,13 +173,9 @@ PKCS12 *PKCS12_create(char *pass, char *name, EVP_PKEY *pkey, X509 *cert,
     return p12;
 
  err:
-
-    if (p12)
-        PKCS12_free(p12);
-    if (safes)
-        sk_PKCS7_pop_free(safes, PKCS7_free);
-    if (bags)
-        sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);
+    PKCS12_free(p12);
+    sk_PKCS7_pop_free(safes, PKCS7_free);
+    sk_PKCS12_SAFEBAG_pop_free(bags, PKCS12_SAFEBAG_free);
     return NULL;
 
 }
@@ -216,10 +212,7 @@ PKCS12_SAFEBAG *PKCS12_add_cert(STACK_OF(PKCS12_SAFEBAG) **pbags, X509 *cert)
     return bag;
 
  err:
-
-    if (bag)
-        PKCS12_SAFEBAG_free(bag);
-
+    PKCS12_SAFEBAG_free(bag);
     return NULL;
 
 }
@@ -252,10 +245,7 @@ PKCS12_SAFEBAG *PKCS12_add_key(STACK_OF(PKCS12_SAFEBAG) **pbags,
     return bag;
 
  err:
-
-    if (bag)
-        PKCS12_SAFEBAG_free(bag);
-
+    PKCS12_SAFEBAG_free(bag);
     return NULL;
 
 }
@@ -298,10 +288,7 @@ int PKCS12_add_safe(STACK_OF(PKCS7) **psafes, STACK_OF(PKCS12_SAFEBAG) *bags,
         sk_PKCS7_free(*psafes);
         *psafes = NULL;
     }
-
-    if (p7)
-        PKCS7_free(p7);
-
+    PKCS7_free(p7);
     return 0;
 
 }
index 34710e9e691bc6969b54cff67261cff644cb930f..22fa10e865d6917c831ff372799765c70ac7551d 100644 (file)
@@ -83,10 +83,9 @@ PKCS12 *PKCS12_init(int mode)
         PKCS12err(PKCS12_F_PKCS12_INIT, PKCS12_R_UNSUPPORTED_PKCS12_MODE);
         goto err;
     }
-
     return pkcs12;
+
  err:
-    if (pkcs12 != NULL)
-        PKCS12_free(pkcs12);
+    PKCS12_free(pkcs12);
     return NULL;
 }
index 956f3f22e773016a1ba7eea04daa1d33ce30aec1..e14d8c6c3c48df93e9df054bd6ad1dba9fb41a57 100644 (file)
@@ -121,8 +121,7 @@ int PKCS7_content_new(PKCS7 *p7, int type)
 
     return (1);
  err:
-    if (ret != NULL)
-        PKCS7_free(ret);
+    PKCS7_free(ret);
     return (0);
 }
 
@@ -133,13 +132,11 @@ int PKCS7_set_content(PKCS7 *p7, PKCS7 *p7_data)
     i = OBJ_obj2nid(p7->type);
     switch (i) {
     case NID_pkcs7_signed:
-        if (p7->d.sign->contents != NULL)
-            PKCS7_free(p7->d.sign->contents);
+        PKCS7_free(p7->d.sign->contents);
         p7->d.sign->contents = p7_data;
         break;
     case NID_pkcs7_digest:
-        if (p7->d.digest->contents != NULL)
-            PKCS7_free(p7->d.digest->contents);
+        PKCS7_free(p7->d.digest->contents);
         p7->d.digest->contents = p7_data;
         break;
     case NID_pkcs7_data:
@@ -422,8 +419,7 @@ PKCS7_SIGNER_INFO *PKCS7_add_signature(PKCS7 *p7, X509 *x509, EVP_PKEY *pkey,
         goto err;
     return (si);
  err:
-    if (si)
-        PKCS7_SIGNER_INFO_free(si);
+    PKCS7_SIGNER_INFO_free(si);
     return (NULL);
 }
 
@@ -484,8 +480,7 @@ PKCS7_RECIP_INFO *PKCS7_add_recipient(PKCS7 *p7, X509 *x509)
         goto err;
     return ri;
  err:
-    if (ri)
-        PKCS7_RECIP_INFO_free(ri);
+    PKCS7_RECIP_INFO_free(ri);
     return NULL;
 }
 
index a418707b6bf8ef570168a1ad397c52d548758614..9752dea1f943ca00c1dfd27d5cd19db2f8c7efa8 100644 (file)
@@ -53,18 +53,14 @@ int main(int argc, char **argv)
     ret = 0;
 
  err:
-
     if (ret) {
         fprintf(stderr, "Error Signing Data\n");
         ERR_print_errors_fp(stderr);
     }
-
-    if (p7)
-        PKCS7_free(p7);
+    PKCS7_free(p7);
     if (rcert)
         X509_free(rcert);
     EVP_PKEY_free(rkey);
-
     BIO_free(in);
     BIO_free(out);
     BIO_free(tbio);
index 5a85537ad0ef45e1db7203a3be241bcb82cc464d..2e594ee89e07d17ebdb1f89936013482dc231d1a 100644 (file)
@@ -67,23 +67,18 @@ int main(int argc, char **argv)
     ret = 0;
 
  err:
-
     if (ret) {
         fprintf(stderr, "Error Encrypting Data\n");
         ERR_print_errors_fp(stderr);
     }
-
-    if (p7)
-        PKCS7_free(p7);
+    PKCS7_free(p7);
     if (rcert)
         X509_free(rcert);
     if (recips)
         sk_X509_pop_free(recips, X509_free);
-
     BIO_free(in);
     BIO_free(out);
     BIO_free(tbio);
-
     return ret;
 
 }
index 455efcb48330d46da61244400b33732c88c01dce..91ab8e475ddb7efec25bd5dea558b62c16b67ba6 100644 (file)
@@ -63,18 +63,14 @@ int main(int argc, char **argv)
     ret = 0;
 
  err:
-
     if (ret) {
         fprintf(stderr, "Error Signing Data\n");
         ERR_print_errors_fp(stderr);
     }
-
-    if (p7)
-        PKCS7_free(p7);
+    PKCS7_free(p7);
     if (scert)
         X509_free(scert);
     EVP_PKEY_free(skey);
-
     BIO_free(in);
     BIO_free(out);
     BIO_free(tbio);
index 5f20a40349ec43d1b1307900f72dcd24aa173948..0ad709d041104459162282fbc96a3509fe0fa999 100644 (file)
@@ -71,27 +71,19 @@ int main(int argc, char **argv)
     ret = 0;
 
  err:
-
     if (ret) {
         fprintf(stderr, "Error Signing Data\n");
         ERR_print_errors_fp(stderr);
     }
-
-    if (p7)
-        PKCS7_free(p7);
-
+    PKCS7_free(p7);
     if (scert)
         X509_free(scert);
     EVP_PKEY_free(skey);
-
     if (scert2)
         X509_free(scert2);
     EVP_PKEY_free(skey2);
-
     BIO_free(in);
     BIO_free(out);
     BIO_free(tbio);
-
     return ret;
-
 }
index 4088d3c38e3fa9b39443cbb67dd304d57cba6f3c..c4b6e751a9ab8b2c20abcd7f39d0278eb3f138f5 100644 (file)
@@ -61,22 +61,15 @@ int main(int argc, char **argv)
     ret = 0;
 
  err:
-
     if (ret) {
         fprintf(stderr, "Error Verifying Data\n");
         ERR_print_errors_fp(stderr);
     }
-
-    if (p7)
-        PKCS7_free(p7);
-
+    PKCS7_free(p7);
     if (cacert)
         X509_free(cacert);
-
     BIO_free(in);
     BIO_free(out);
     BIO_free(tbio);
-
     return ret;
-
 }
index cb7bd86e2a269e1c2787e8e00061c753dfcd7a4d..42ee3a918c7a1d0bb867dce6d04a4b142527a037 100644 (file)
@@ -568,15 +568,13 @@ void SSL_free(SSL *s)
     ssl_clear_hash_ctx(&s->read_hash);
     ssl_clear_hash_ctx(&s->write_hash);
 
-    if (s->cert != NULL)
-        ssl_cert_free(s->cert);
+    ssl_cert_free(s->cert);
     /* Free up if allocated */
 
 #ifndef OPENSSL_NO_TLSEXT
     if (s->tlsext_hostname)
         OPENSSL_free(s->tlsext_hostname);
-    if (s->initial_ctx)
-        SSL_CTX_free(s->initial_ctx);
+    SSL_CTX_free(s->initial_ctx);
 # ifndef OPENSSL_NO_EC
     if (s->tlsext_ecpointformatlist)
         OPENSSL_free(s->tlsext_ecpointformatlist);
@@ -601,8 +599,7 @@ void SSL_free(SSL *s)
 
     RECORD_LAYER_release(&s->rlayer);
 
-    if (s->ctx)
-        SSL_CTX_free(s->ctx);
+    SSL_CTX_free(s->ctx);
 
 #ifndef OPENSSL_NO_KRB5
     if (s->kssl_ctx != NULL)
@@ -2011,8 +2008,7 @@ SSL_CTX *SSL_CTX_new(const SSL_METHOD *meth)
  err:
     SSLerr(SSL_F_SSL_CTX_NEW, ERR_R_MALLOC_FAILURE);
  err2:
-    if (ret != NULL)
-        SSL_CTX_free(ret);
+    SSL_CTX_free(ret);
     return (NULL);
 }
 
@@ -2062,8 +2058,7 @@ void SSL_CTX_free(SSL_CTX *a)
         sk_SSL_CIPHER_free(a->cipher_list);
     if (a->cipher_list_by_id != NULL)
         sk_SSL_CIPHER_free(a->cipher_list_by_id);
-    if (a->cert != NULL)
-        ssl_cert_free(a->cert);
+    ssl_cert_free(a->cert);
     if (a->client_CA != NULL)
         sk_X509_NAME_pop_free(a->client_CA, X509_NAME_free);
     if (a->extra_certs != NULL)
@@ -2776,9 +2771,7 @@ SSL *SSL_dup(SSL *s)
         ret->method->ssl_new(ret);
 
         if (s->cert != NULL) {
-            if (ret->cert != NULL) {
-                ssl_cert_free(ret->cert);
-            }
+            ssl_cert_free(ret->cert);
             ret->cert = ssl_cert_dup(s->cert);
             if (ret->cert == NULL)
                 goto err;
@@ -2862,8 +2855,7 @@ SSL *SSL_dup(SSL *s)
 
     if (0) {
  err:
-        if (ret != NULL)
-            SSL_free(ret);
+        SSL_free(ret);
         ret = NULL;
     }
     return (ret);
@@ -3092,8 +3084,7 @@ SSL_CTX *SSL_set_SSL_CTX(SSL *ssl, SSL_CTX *ctx)
     }
 
     CRYPTO_add(&ctx->references, 1, CRYPTO_LOCK_SSL_CTX);
-    if (ssl->ctx != NULL)
-        SSL_CTX_free(ssl->ctx); /* decrement reference count */
+    SSL_CTX_free(ssl->ctx); /* decrement reference count */
     ssl->ctx = ctx;
 
     return (ssl->ctx);
index 24e5d259d4c2f54a41799627848e787a010e4b1a..a213ea90dfe927cdc27b1bd3153a78773d301b60 100644 (file)
@@ -726,8 +726,7 @@ void SSL_SESSION_free(SSL_SESSION *ss)
 
     OPENSSL_cleanse(ss->master_key, sizeof ss->master_key);
     OPENSSL_cleanse(ss->session_id, sizeof ss->session_id);
-    if (ss->sess_cert != NULL)
-        ssl_sess_cert_free(ss->sess_cert);
+    ssl_sess_cert_free(ss->sess_cert);
     if (ss->peer != NULL)
         X509_free(ss->peer);
     if (ss->ciphers != NULL)
@@ -795,18 +794,14 @@ int SSL_set_session(SSL *s, SSL_SESSION *session)
 
         /* CRYPTO_w_lock(CRYPTO_LOCK_SSL); */
         CRYPTO_add(&session->references, 1, CRYPTO_LOCK_SSL_SESSION);
-        if (s->session != NULL)
-            SSL_SESSION_free(s->session);
+        SSL_SESSION_free(s->session);
         s->session = session;
         s->verify_result = s->session->verify_result;
         /* CRYPTO_w_unlock(CRYPTO_LOCK_SSL); */
         ret = 1;
     } else {
-        if (s->session != NULL) {
-            SSL_SESSION_free(s->session);
-            s->session = NULL;
-        }
-
+        SSL_SESSION_free(s->session);
+        s->session = NULL;
         meth = s->ctx->method;
         if (meth != s->method) {
             if (!SSL_set_ssl_method(s, meth))
index 567ed0f5f974734db84d58b6b1fdfc7e0ebfa56a..5641d98fee368116311fdddd295fcd53512db977 100644 (file)
@@ -410,10 +410,7 @@ static int test_EVP_PKCS82PKEY(void)
     ret = 1;
 
  done:
-    if (p8inf != NULL) {
-        PKCS8_PRIV_KEY_INFO_free(p8inf);
-    }
-
+    PKCS8_PRIV_KEY_INFO_free(p8inf);
     EVP_PKEY_free(pkey);
 
     return ret;
index 6ad63427ad4ae127ba171dba4c3af2d6395c138b..25bec77031fee14f11d0d06d367d5b55fe15860e 100644 (file)
@@ -1791,7 +1791,6 @@ int main(int argc, char *argv[])
  end:
     SSL_CTX_free(s_ctx);
     SSL_CTX_free(c_ctx);
-
     SSL_CONF_CTX_free(s_cctx);
     SSL_CONF_CTX_free(c_cctx);
     sk_OPENSSL_STRING_free(conf_args);