mirror of https://github.com/openssl/openssl.git
				
				
				
			Change the semantics of OSSL_LIB_CTX_set0_default() NULL handling
Change things so that passing NULL to OSSL_LIB_CTX_set0_default() means keep the current library context unchanged. This has the advantage of simplifying error handling, e.g. you can call OSSL_LIB_CTX_set0_default in an error/finalisation block safe in the knowledge the if the "prevctx" was never set then it will be a no-op (like calling a "free" function with NULL). Fixes #14593 Reviewed-by: Paul Dale <pauli@openssl.org> Reviewed-by: Tim Hudson <tjh@openssl.org> Reviewed-by: Tomas Mraz <tomas@openssl.org> (Merged from https://github.com/openssl/openssl/pull/14890)
This commit is contained in:
		
							parent
							
								
									145a4c871d
								
							
						
					
					
						commit
						92b20fb8f7
					
				| 
						 | 
				
			
			@ -204,9 +204,11 @@ OSSL_LIB_CTX *OSSL_LIB_CTX_set0_default(OSSL_LIB_CTX *libctx)
 | 
			
		|||
#ifndef FIPS_MODULE
 | 
			
		||||
    OSSL_LIB_CTX *current_defctx;
 | 
			
		||||
 | 
			
		||||
    if ((current_defctx = get_default_context()) != NULL
 | 
			
		||||
        && set_default_context(libctx))
 | 
			
		||||
    if ((current_defctx = get_default_context()) != NULL) {
 | 
			
		||||
        if (libctx != NULL)
 | 
			
		||||
            set_default_context(libctx);
 | 
			
		||||
        return current_defctx;
 | 
			
		||||
    }
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
    return NULL;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -41,7 +41,9 @@ default OpenSSL library context.
 | 
			
		|||
OSSL_LIB_CTX_set0_default() sets the default OpenSSL library context to be
 | 
			
		||||
I<ctx> in the current thread.  The previous default library context is
 | 
			
		||||
returned.  Care should be taken by the caller to restore the previous
 | 
			
		||||
default library context with a subsequent call of this function.
 | 
			
		||||
default library context with a subsequent call of this function. If I<ctx> is
 | 
			
		||||
NULL then no change is made to the default library context, but a pointer to
 | 
			
		||||
the current library context is still returned.
 | 
			
		||||
 | 
			
		||||
Care should be taken when changing the default library context and starting
 | 
			
		||||
async jobs (see L<ASYNC_start_job(3)>), as the default library context when
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue