X-Git-Url: https://git.openssl.org/?p=openssl.git;a=blobdiff_plain;f=ssl%2Fbio_ssl.c;h=a8260c9c43f3a010da07f1488aadd623d798a4a7;hp=284d3ad133a0e6e15f167b75c4169de81eb4b803;hb=7ab09630cd069af0fe06a762e5d85b3e827b3b88;hpb=b548a1f11c06ccdfa4f52a539912d22d77ee309e diff --git a/ssl/bio_ssl.c b/ssl/bio_ssl.c index 284d3ad133..a8260c9c43 100644 --- a/ssl/bio_ssl.c +++ b/ssl/bio_ssl.c @@ -101,14 +101,12 @@ BIO_METHOD *BIO_f_ssl(void) static int ssl_new(BIO *bi) { - BIO_SSL *bs; + BIO_SSL *bs = OPENSSL_zalloc(sizeof(*bs)); - bs = OPENSSL_malloc(sizeof(BIO_SSL)); if (bs == NULL) { BIOerr(BIO_F_SSL_NEW, ERR_R_MALLOC_FAILURE); return (0); } - memset(bs, 0, sizeof(BIO_SSL)); bi->init = 0; bi->ptr = (char *)bs; bi->flags = 0; @@ -409,6 +407,10 @@ static long ssl_ctrl(BIO *b, int cmd, long num, void *ptr) BIO_set_flags(b, BIO_FLAGS_IO_SPECIAL | BIO_FLAGS_SHOULD_RETRY); b->retry_reason = b->next_bio->retry_reason; break; + case SSL_ERROR_WANT_X509_LOOKUP: + BIO_set_retry_special(b); + b->retry_reason = BIO_RR_SSL_X509_LOOKUP; + break; default: break; }