diff options
author | Matt Caswell <matt@openssl.org> | 2016-04-04 16:49:21 +0200 |
---|---|---|
committer | Matt Caswell <matt@openssl.org> | 2016-04-13 09:52:33 +0200 |
commit | 7b8cc9b3458ec3f18b4d4d9ca2a72b6b3e3744c8 (patch) | |
tree | da9131b97fb33b3ae50e5d79665a8bdef5eee16c | |
parent | Deprecate EVP_cleanup() and make it a no-op (diff) | |
download | openssl-7b8cc9b3458ec3f18b4d4d9ca2a72b6b3e3744c8.tar.xz openssl-7b8cc9b3458ec3f18b4d4d9ca2a72b6b3e3744c8.zip |
Deprecate OBJ_cleanup() and make it a no-op
OBJ_cleanup() should not be called expicitly - we should leave
auto-deinit to clean this up instead.
Reviewed-by: Tim Hudson <tjh@openssl.org>
Reviewed-by: Richard Levitte <levitte@openssl.org>
-rw-r--r-- | apps/asn1pars.c | 1 | ||||
-rw-r--r-- | apps/ca.c | 1 | ||||
-rw-r--r-- | apps/req.c | 1 | ||||
-rw-r--r-- | apps/srp.c | 1 | ||||
-rw-r--r-- | apps/ts.c | 1 | ||||
-rw-r--r-- | apps/x509.c | 1 | ||||
-rw-r--r-- | crypto/asn1/asn_moid.c | 3 | ||||
-rw-r--r-- | crypto/evp/names.c | 4 | ||||
-rw-r--r-- | crypto/include/internal/objects.h | 11 | ||||
-rw-r--r-- | crypto/init.c | 5 | ||||
-rw-r--r-- | crypto/objects/obj_dat.c | 4 | ||||
-rw-r--r-- | doc/crypto/OBJ_nid2obj.pod | 19 | ||||
-rw-r--r-- | include/openssl/objects.h | 4 |
13 files changed, 36 insertions, 20 deletions
diff --git a/apps/asn1pars.c b/apps/asn1pars.c index a6cc6397fa..3da7e3b4c5 100644 --- a/apps/asn1pars.c +++ b/apps/asn1pars.c @@ -327,7 +327,6 @@ int asn1parse_main(int argc, char **argv) OPENSSL_free(str); ASN1_TYPE_free(at); sk_OPENSSL_STRING_free(osk); - OBJ_cleanup(); return (ret); } @@ -1307,7 +1307,6 @@ end_of_options: X509_CRL_free(crl); NCONF_free(conf); NCONF_free(extconf); - OBJ_cleanup(); return (ret); } diff --git a/apps/req.c b/apps/req.c index e3869bab19..7f4a946aaa 100644 --- a/apps/req.c +++ b/apps/req.c @@ -867,7 +867,6 @@ int req_main(int argc, char **argv) OPENSSL_free(passin); if (passout != nofree_passout) OPENSSL_free(passout); - OBJ_cleanup(); return (ret); } diff --git a/apps/srp.c b/apps/srp.c index 2c4d746f88..1bf2ee299a 100644 --- a/apps/srp.c +++ b/apps/srp.c @@ -653,7 +653,6 @@ int srp_main(int argc, char **argv) app_RAND_write_file(randfile); NCONF_free(conf); free_index(db); - OBJ_cleanup(); return (ret); } #endif @@ -383,7 +383,6 @@ int ts_main(int argc, char **argv) app_RAND_write_file(NULL); NCONF_free(conf); OPENSSL_free(password); - OBJ_cleanup(); return (ret); } diff --git a/apps/x509.c b/apps/x509.c index 6ee26115ee..d8be179d43 100644 --- a/apps/x509.c +++ b/apps/x509.c @@ -919,7 +919,6 @@ int x509_main(int argc, char **argv) end: if (need_rand) app_RAND_write_file(NULL); - OBJ_cleanup(); NCONF_free(extconf); BIO_free_all(out); X509_STORE_free(ctx); diff --git a/crypto/asn1/asn_moid.c b/crypto/asn1/asn_moid.c index 8198874aa9..ded5d018b4 100644 --- a/crypto/asn1/asn_moid.c +++ b/crypto/asn1/asn_moid.c @@ -63,6 +63,7 @@ #include <openssl/conf.h> #include <openssl/x509.h> #include "internal/asn1_int.h" +#include "internal/objects.h" /* Simple ASN1 OID module: add all objects in a given section */ @@ -92,7 +93,7 @@ static int oid_module_init(CONF_IMODULE *md, const CONF *cnf) static void oid_module_finish(CONF_IMODULE *md) { - OBJ_cleanup(); + obj_cleanup_intern(); } void ASN1_add_oid_module(void) diff --git a/crypto/evp/names.c b/crypto/evp/names.c index 22c725d060..5ef52b43df 100644 --- a/crypto/evp/names.c +++ b/crypto/evp/names.c @@ -58,7 +58,7 @@ #include <stdio.h> #include "internal/cryptlib.h" #include <openssl/evp.h> -#include <openssl/objects.h> +#include <internal/objects.h> #include <openssl/x509.h> #include "internal/evp_int.h" @@ -142,7 +142,7 @@ void evp_cleanup_intern(void) EVP_PBE_cleanup(); if (obj_cleanup_defer == 2) { obj_cleanup_defer = 0; - OBJ_cleanup(); + obj_cleanup_intern(); } OBJ_sigid_free(); } diff --git a/crypto/include/internal/objects.h b/crypto/include/internal/objects.h new file mode 100644 index 0000000000..601294f3f2 --- /dev/null +++ b/crypto/include/internal/objects.h @@ -0,0 +1,11 @@ +/* + * Licensed under the OpenSSL licenses, (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * https://www.openssl.org/source/license.html + * or in the file LICENSE in the source distribution. + */ + +#include <openssl/objects.h> + +void obj_cleanup_intern(void); diff --git a/crypto/init.c b/crypto/init.c index dc24c02693..170d11b91c 100644 --- a/crypto/init.c +++ b/crypto/init.c @@ -67,6 +67,7 @@ #include <internal/engine.h> #include <internal/comp.h> #include <internal/err.h> +#include <internal/objects.h> #include <stdlib.h> #include <assert.h> @@ -468,7 +469,7 @@ void OPENSSL_cleanup(void) fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: " "evp_cleanup_intern()\n"); fprintf(stderr, "OPENSSL_INIT: OPENSSL_cleanup: " - "OBJ_cleanup()\n"); + "obj_cleanup_intern()\n"); #endif /* * Note that cleanup order is important: @@ -489,7 +490,7 @@ void OPENSSL_cleanup(void) bio_sock_cleanup_intern(); #endif evp_cleanup_intern(); - OBJ_cleanup(); + obj_cleanup_intern(); base_inited = 0; } diff --git a/crypto/objects/obj_dat.c b/crypto/objects/obj_dat.c index 21b4187a25..90db56bbd8 100644 --- a/crypto/objects/obj_dat.c +++ b/crypto/objects/obj_dat.c @@ -61,7 +61,7 @@ #include "internal/cryptlib.h" #include <openssl/lhash.h> #include <openssl/asn1.h> -#include <openssl/objects.h> +#include "internal/objects.h" #include <openssl/bn.h> #include "internal/asn1_int.h" #include "obj_lcl.h" @@ -210,7 +210,7 @@ void check_defer(int nid) obj_cleanup_defer = 1; } -void OBJ_cleanup(void) +void obj_cleanup_intern(void) { if (obj_cleanup_defer) { obj_cleanup_defer = 2; diff --git a/doc/crypto/OBJ_nid2obj.pod b/doc/crypto/OBJ_nid2obj.pod index b2b815db65..2db96a132f 100644 --- a/doc/crypto/OBJ_nid2obj.pod +++ b/doc/crypto/OBJ_nid2obj.pod @@ -27,11 +27,16 @@ functions ASN1_OBJECT * OBJ_dup(const ASN1_OBJECT *o); int OBJ_create(const char *oid,const char *sn,const char *ln); - void OBJ_cleanup(void); size_t OBJ_length(const ASN1_OBJECT *obj); const unsigned char *OBJ_get0_data(const ASN1_OBJECT *obj); +Deprecated: + + #if OPENSSL_API_COMPAT < 0x10100000L + # define OBJ_cleanup() + #endif + =head1 DESCRIPTION The ASN1 object utility functions process ASN1_OBJECT structures which are @@ -69,15 +74,17 @@ OBJ_create() adds a new object to the internal table. B<oid> is the numerical form of the object, B<sn> the short name and B<ln> the long name. A new NID is returned for the created object. -OBJ_cleanup() cleans up OpenSSLs internal object table: this should -be called before an application exits if any new objects were added -using OBJ_create(). - OBJ_length() returns the size of the content octets of B<obj>. OBJ_get0_data() returns a pointer to the content octets of B<obj>. The returned pointer is an internal pointer which B<must not> be freed. +In OpenSSL versions prior to 1.1.0 OBJ_cleanup() cleaned up OpenSSLs internal +object table and was called before an application exits if any new objects were +added using OBJ_create(). This function is deprecated in version 1.1.0 and now +does nothing if called. No explicit de-initialisation is now required. See +L<OPENSSL_init_crypto(3)> for further information. + =head1 NOTES Objects in OpenSSL can have a short name, a long name and a numerical @@ -160,6 +167,6 @@ L<ERR_get_error(3)> =head1 HISTORY -TBA +OBJ_cleanup() was deprecated in OpenSSL 1.1.0. =cut diff --git a/include/openssl/objects.h b/include/openssl/objects.h index 05bc9b0248..c61e49ea35 100644 --- a/include/openssl/objects.h +++ b/include/openssl/objects.h @@ -1103,7 +1103,9 @@ const void *OBJ_bsearch_ex_(const void *key, const void *base, int num, int OBJ_new_nid(int num); int OBJ_add_object(const ASN1_OBJECT *obj); int OBJ_create(const char *oid, const char *sn, const char *ln); -void OBJ_cleanup(void); +#if OPENSSL_API_COMPAT < 0x10100000L +# define OBJ_cleanup() +#endif int OBJ_create_objects(BIO *in); size_t OBJ_length(const ASN1_OBJECT *obj); |