【问题标题】:Double free reported in my code using openssl 1.0.2k使用 openssl 1.0.2k 在我的代码中报告了双倍免费
【发布时间】:2021-06-23 03:05:47
【问题描述】:

我在我的应用程序中使用 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 之后不需要进行 bio free 操作。所以我做了更改并重新执行了代码。但仍然会产生相同的错误。请提出任何可能的根本原因。

【问题讨论】:

    标签: openssl glibc double-free


    【解决方案1】:

    如果有人可以帮助您,您需要MCVE

    ValgrindAddress Sanitizer 下运行你的程序,double-free 的来源应该马上就很明显了。

    【讨论】:

      猜你喜欢
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-08
      • 2018-01-01
      • 1970-01-01
      相关资源
      最近更新 更多