0

我有以下代码(删除了一些不相关的部分)

SSL_METHOD *meth = NULL;
SSL_CTX *ctx = NULL;
SSL *ssl = NULL;
BIO *sbio;
//open socket
int sock = open_port(ip,80);
if(sock == -1)
    return -1;
meth=SSLv23_client_method();
OpenSSL_add_ssl_algorithms();
ctx=SSL_CTX_new(meth);
/* Connect the SSL socket */
ssl=SSL_new(ctx);
sbio=BIO_new_socket(sock,BIO_NOCLOSE);
SSL_set_bio(ssl,sbio,sbio);
if(SSL_connect(ssl)<=0)
{
    SSL_free(ssl);
    SSL_CTX_free(ctx);
    return -1;
}

//ssl write & read part

SSL_shutdown(ssl);
SSL_free(ssl);
SSL_CTX_free(ctx);
//close socket
close(sock);

这是每个线程都调用 ssl 连接的函数,它工作正常,除了运行一段时间后出现以下错误:

*** glibc detected *** test: double free or corruption (fasttop): 0xc4813440 ***
*** glibc detected *** test: double free or corruption (!prev): 0x096008b0 ***

* SSL_free 和 SSL_CTX_free 之间的哪些函数我不应该使用它?或者错误来自其他地方?*

4

0 回答 0