]> git.ipfire.org Git - thirdparty/haproxy.git/commitdiff
BUG/MEDIUM: ssl: do not store pkinfo with SSL_set_ex_data
authorEmmanuel Hocdet <manu@gandi.net>
Mon, 18 Jun 2018 10:44:19 +0000 (12:44 +0200)
committerWilly Tarreau <w@1wt.eu>
Mon, 18 Jun 2018 11:34:09 +0000 (13:34 +0200)
Bug from 96b7834e: pkinfo is stored on SSL_CTX ex_data and should
not be also stored on SSL ex_data without reservation.
Simply extract pkinfo from SSL_CTX in ssl_sock_get_pkey_algo.

No backport needed.

src/ssl_sock.c

index fb12ca87e0a1dafef06e5973f87d0f84a3bee3bc..b5547cc9efea0f55a361264222e1aa01d6533b88 100644 (file)
@@ -2064,11 +2064,6 @@ static struct {
 
 static void ssl_sock_switchctx_set(SSL *ssl, SSL_CTX *ctx)
 {
-       struct pkey_info *pkinfo;
-
-       pkinfo = SSL_CTX_get_ex_data(ctx, ssl_pkey_info_index);
-       if (pkinfo)
-               SSL_set_ex_data(ssl, ssl_pkey_info_index, pkinfo);
        SSL_set_verify(ssl, SSL_CTX_get_verify_mode(ctx), ssl_sock_bind_verifycbk);
        SSL_set_client_CA_list(ssl, SSL_dup_CA_list(SSL_CTX_get_client_CA_list(ctx)));
        SSL_set_SSL_CTX(ssl, ctx);
@@ -5725,7 +5720,7 @@ int ssl_sock_get_pkey_algo(struct connection *conn, struct chunk *out)
        if (!ssl_sock_is_ssl(conn))
                return 0;
 
-       pkinfo = SSL_get_ex_data(conn->xprt_ctx, ssl_pkey_info_index);
+       pkinfo = SSL_CTX_get_ex_data(SSL_get_SSL_CTX(conn->xprt_ctx), ssl_pkey_info_index);
        if (pkinfo) {
                sig = pkinfo->sig;
                bits = pkinfo->bits;