在我使用openssl 1.0.2k的代码中报告了双重免费



我在应用程序中使用openssl库1.0.2k。在某些随机情况下,会出现双自由误差情况。基本代码流是:

BIO* sbio = NULL;
if (!(con = (SSL *) SSL_new(ctx))) {
sprintf(ReturnBuf, "sweb: Cannot create new SSL connection");
close(sockfd);
SSL_CTX_free(ctx);
return -1;
}
if (!(sbio = BIO_new_socket(sockfd, BIO_NOCLOSE))) {
sprintf(ReturnBuf, "sweb: Cannot create new socket BIO");
close(sockfd);
SSL_shutdown(con);
SSL_free(con);
SSL_CTX_free(ctx);
if (sbio)
BIO_free(sbio);
return -1;
}
SSL_set_bio(con, sbio, sbio);
In case of any ssl error, following snippet gets executed:
close(sockfd);
SSL_shutdown(con);
SSL_free(con);
SSL_CTX_free(ctx);
if (sbio)
BIO_free(sbio);

根据我最近的了解,SSL_free之后不需要进行无生物操作。所以我做了更改并重新执行了代码。但仍然会产生同样的错误。请提出任何可能的根本原因。

任何人都需要MCVE来帮助您。

在Valgrind或Address Sanitizer下运行您的程序,双免费的来源应该会立即变得显而易见。

相关内容

  • 没有找到相关文章

最新更新