通过Source Insight查看openssl的源代码,可发现SSL建立的来龙去脉。
1. 先看SSL_NEW.
static int ssl_new(BIO *bi)
{
BIO_SSL *bs;
bs = (BIO_SSL *)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;
return (1);
}
bs为BIO_SSL指针,指向OPENSSL_malloc的返回值,即地址,OPENSSL_malloc的作用是什么?再追踪: