summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatt Caswell <matt@openssl.org>2016-04-04 15:49:21 +0100
committerMatt Caswell <matt@openssl.org>2016-04-13 08:52:33 +0100
commit7b8cc9b3458ec3f18b4d4d9ca2a72b6b3e3744c8 (patch)
treeda9131b97fb33b3ae50e5d79665a8bdef5eee16c
parent22c84afa773559279af928652a2d9f3489cc7d73 (diff)
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.c1
-rw-r--r--apps/ca.c1
-rw-r--r--apps/req.c1
-rw-r--r--apps/srp.c1
-rw-r--r--apps/ts.c1
-rw-r--r--apps/x509.c1
-rw-r--r--crypto/asn1/asn_moid.c3
-rw-r--r--crypto/evp/names.c4
-rw-r--r--crypto/include/internal/objects.h11
-rw-r--r--crypto/init.c5
-rw-r--r--crypto/objects/obj_dat.c4
-rw-r--r--doc/crypto/OBJ_nid2obj.pod19
-rw-r--r--include/openssl/objects.h4
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);
}
diff --git a/apps/ca.c b/apps/ca.c
index d2990a5673..95801fbf39 100644
--- a/apps/ca.c
+++ b/apps/ca.c
@@ -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
diff --git a/apps/ts.c b/apps/ts.c
index 44e6004c78..ec0cfa9d92 100644
--- a/apps/ts.c
+++ b/apps/ts.c
@@ -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);