[openssl-users] SSL_shutdown:shutdown while in init

Matt Caswell matt at openssl.org
Wed Oct 18 09:14:53 UTC 2017



On 17/10/17 21:27, Chris Bare wrote:
> I have the following code:
> 
> setup_ssl (char *server_name, char *port, SSL_CTX *ctx)
> {
>     BIO *output = BIO_new_ssl_connect (ctx);
>     if (!output)
>     {
>         return (NULL);
>     }
>     BIO_get_ssl (output, &ssl);
>     SSL_set_mode (ssl, SSL_MODE_AUTO_RETRY);
>     SSL_set_verify (ssl, true, NULL);
>     BIO_set_conn_hostname (output, server_name);
>     BIO_set_conn_port(output, port);
> 
>     if (BIO_do_connect (output) <= 0)
>     {
>         BIO_free (output);
>         return (NULL);
>     }
> }
> 
> If the server I'm trying to connect to does not have ssl enabled, I get
> the error:
> SSL23_GET_SERVER_HELLO:unknown protocol
> and BIO_do_connect fails as expected, but BIO_free gives this error:
> SSL_shutdown:shutdown while in init

Hmmm...that looks like an OpenSSL bug to me. It should not call
SSL_shutdown() if we are still in init. I raised this issue:

https://github.com/openssl/openssl/issues/4545


> 
> If I don't free it, I have a memory leak.
> Is there something else I need to do to clean up the BIO?

As a workaround for this I think you can just ignore the error. From
code inspection it looks to me like it should go ahead and free
everything anyway.

Matt




More information about the openssl-users mailing list