** certtool: When signing a CSR, CRL distribution point (CDP) is no longer
copied from the signing CA by default (#1126).
+** libgnutls: The GNUTLS_NO_EXPLICIT_INIT envvar has been renamed to
+ GNUTLS_NO_IMPLICIT_INIT to reflect the purpose (#1178). The former is now
+ deprecated and will be removed in the future releases.
+
* Version 3.7.1 (released 2021-03-10)
** libgnutls: Fixed potential use-after-free in sending "key_share"
The GnuTLS library is initialized on load; prior to 3.3.0 was initialized by calling @funcref{gnutls_global_init}@footnote{
The original behavior of requiring explicit initialization can obtained by setting the
-GNUTLS_NO_EXPLICIT_INIT environment variable to 1, or by using the macro GNUTLS_SKIP_GLOBAL_INIT
+GNUTLS_NO_IMPLICIT_INIT environment variable to 1, or by using the macro GNUTLS_SKIP_GLOBAL_INIT
in a global section of your program --the latter works in systems with
support for weak symbols only.}. @funcref{gnutls_global_init} in
versions after 3.3.0 is thread-safe (see @ref{Thread safety}).
*
* Since GnuTLS 3.3.0 this function is no longer necessary to be explicitly
* called. To disable the implicit call (in a library constructor) of this
- * function set the environment variable %GNUTLS_NO_EXPLICIT_INIT to 1.
+ * function set the environment variable %GNUTLS_NO_IMPLICIT_INIT to 1.
*
* This function performs any required precalculations, detects
* the supported CPU capabilities and initializes the underlying
static void _CONSTRUCTOR lib_init(void)
{
-int ret;
-const char *e;
+ int ret;
+ const char *e;
if (_gnutls_global_init_skip() != 0)
return;
+ e = secure_getenv("GNUTLS_NO_IMPLICIT_INIT");
+ if (e != NULL) {
+ ret = atoi(e);
+ if (ret == 1)
+ return;
+ }
+
e = secure_getenv("GNUTLS_NO_EXPLICIT_INIT");
if (e != NULL) {
+ _gnutls_debug_log("GNUTLS_NO_EXPLICIT_INIT is deprecated; use GNUTLS_NO_IMPLICIT_INIT\n");
ret = atoi(e);
if (ret == 1)
return;
static void _DESTRUCTOR lib_deinit(void)
{
+ int ret;
const char *e;
if (_gnutls_global_init_skip() != 0)
return;
+ e = secure_getenv("GNUTLS_NO_IMPLICIT_INIT");
+ if (e != NULL) {
+ ret = atoi(e);
+ if (ret == 1)
+ return;
+ }
+
e = secure_getenv("GNUTLS_NO_EXPLICIT_INIT");
if (e != NULL) {
- int ret = atoi(e);
+ _gnutls_debug_log("GNUTLS_NO_EXPLICIT_INIT is deprecated; use GNUTLS_NO_IMPLICIT_INIT\n");
+ ret = atoi(e);
if (ret == 1)
return;
}