summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDr. Stephen Henson <steve@openssl.org>2016-04-13 13:11:59 +0200
committerDr. Stephen Henson <steve@openssl.org>2016-04-13 16:05:07 +0200
commita535fe12f625f30e5e6b27d588403fe25a3ffcf3 (patch)
tree98f2236f3977192ec01b5196a0e17e7bc0a6cc19
parentRename internal symbol to follow internal naming pattern (diff)
downloadopenssl-a535fe12f625f30e5e6b27d588403fe25a3ffcf3.tar.xz
openssl-a535fe12f625f30e5e6b27d588403fe25a3ffcf3.zip
Remove check_defer()
The check_defer() function was used to ensure that EVP_cleanup() was always called before OBJ_cleanup(). The new cleanup code ensures this so it is no longer needed. Remove obj_cleanup() call in OID config module: it is not needed any more either. Reviewed-by: Matt Caswell <matt@openssl.org>
-rw-r--r--crypto/asn1/asn_moid.c1
-rw-r--r--crypto/evp/names.c7
-rw-r--r--crypto/init.c4
-rw-r--r--crypto/objects/obj_dat.c16
-rw-r--r--include/openssl/objects.h3
5 files changed, 3 insertions, 28 deletions
diff --git a/crypto/asn1/asn_moid.c b/crypto/asn1/asn_moid.c
index bebf82a55e..a5c86011ff 100644
--- a/crypto/asn1/asn_moid.c
+++ b/crypto/asn1/asn_moid.c
@@ -93,7 +93,6 @@ static int oid_module_init(CONF_IMODULE *md, const CONF *cnf)
static void oid_module_finish(CONF_IMODULE *md)
{
- obj_cleanup_int();
}
void ASN1_add_oid_module(void)
diff --git a/crypto/evp/names.c b/crypto/evp/names.c
index 501bfeead5..2e8281a3ff 100644
--- a/crypto/evp/names.c
+++ b/crypto/evp/names.c
@@ -73,7 +73,6 @@ int EVP_add_cipher(const EVP_CIPHER *c)
(const char *)c);
if (r == 0)
return (0);
- check_defer(c->nid);
r = OBJ_NAME_add(OBJ_nid2ln(c->nid), OBJ_NAME_TYPE_CIPHER_METH,
(const char *)c);
return (r);
@@ -88,7 +87,6 @@ int EVP_add_digest(const EVP_MD *md)
r = OBJ_NAME_add(name, OBJ_NAME_TYPE_MD_METH, (const char *)md);
if (r == 0)
return (0);
- check_defer(md->type);
r = OBJ_NAME_add(OBJ_nid2ln(md->type), OBJ_NAME_TYPE_MD_METH,
(const char *)md);
if (r == 0)
@@ -99,7 +97,6 @@ int EVP_add_digest(const EVP_MD *md)
OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, name);
if (r == 0)
return (0);
- check_defer(md->pkey_type);
r = OBJ_NAME_add(OBJ_nid2ln(md->pkey_type),
OBJ_NAME_TYPE_MD_METH | OBJ_NAME_ALIAS, name);
}
@@ -140,10 +137,6 @@ void evp_cleanup_int(void)
OBJ_NAME_cleanup(-1);
EVP_PBE_cleanup();
- if (obj_cleanup_defer == 2) {
- obj_cleanup_defer = 0;
- obj_cleanup_int();
- }
OBJ_sigid_free();
}
diff --git a/crypto/init.c b/crypto/init.c
index 21dc36d35e..f44e3a84f2 100644
--- a/crypto/init.c
+++ b/crypto/init.c
@@ -474,12 +474,14 @@ void OPENSSL_cleanup(void)
#endif
/*
* Note that cleanup order is important:
- * - rand_cleanup_int could call an ENINGE's RAND cleanup function so
+ * - rand_cleanup_int could call an ENGINE's RAND cleanup function so
* must be called before engine_cleanup_int()
* - ENGINEs use CRYPTO_EX_DATA and therefore, must be cleaned up
* before the ex data handlers are wiped in CRYPTO_cleanup_all_ex_data().
* - conf_modules_free_int() can end up in ENGINE code so must be called
* before engine_cleanup_int()
+ * - ENGINEs and additional EVP algorithms might use added OIDs names so
+ * obj_cleanup_int() must be called last
*/
rand_cleanup_int();
conf_modules_free_int();
diff --git a/crypto/objects/obj_dat.c b/crypto/objects/obj_dat.c
index 24e684acd4..6baf2f05b0 100644
--- a/crypto/objects/obj_dat.c
+++ b/crypto/objects/obj_dat.c
@@ -198,24 +198,8 @@ static void cleanup3_doall(ADDED_OBJ *a)
OPENSSL_free(a);
}
-/*
- * The purpose of obj_cleanup_defer is to avoid int_evp_cleanup() attempting
- * to use freed up OIDs. If necessary the actual freeing up of OIDs is delayed.
- */
-int obj_cleanup_defer = 0;
-
-void check_defer(int nid)
-{
- if (!obj_cleanup_defer && nid >= NUM_NID)
- obj_cleanup_defer = 1;
-}
-
void obj_cleanup_int(void)
{
- if (obj_cleanup_defer) {
- obj_cleanup_defer = 2;
- return;
- }
if (added == NULL)
return;
lh_ADDED_OBJ_set_down_load(added, 0);
diff --git a/include/openssl/objects.h b/include/openssl/objects.h
index 79e1d3dfa3..f8c2f05331 100644
--- a/include/openssl/objects.h
+++ b/include/openssl/objects.h
@@ -1116,9 +1116,6 @@ int OBJ_find_sigid_by_algs(int *psignid, int dig_nid, int pkey_nid);
int OBJ_add_sigid(int signid, int dig_id, int pkey_id);
void OBJ_sigid_free(void);
-extern int obj_cleanup_defer;
-void check_defer(int nid);
-
/* BEGIN ERROR CODES */
/*
* The following lines are auto generated by the script mkerr.pl. Any changes