gpt4 book ai didi

c - SSL_CTX_new 中的段错误

转载 作者:太空宇宙 更新时间:2023-11-03 12:59:33 26 4
gpt4 key购买 nike

我正在尝试通过 SSL 作为客户端进行连接,但我看到了一些奇怪的行为。尝试创建新的 SSL 上下文时,我在 SSL_CTX_new 中遇到间歇性段错误。还应该注意的是,这是一个 fCGI 恶魔,并且只有在这样运行时才会出现问题。如果我将它作为独立的 cgi 应用程序运行,问题似乎就消失了。

查看核心文件,这是我所看到的:

splint(??, ??) at 0xd03c36f4
malloc_y(0x4c, 0x0, 0x9e, 0x0, 0x20062240, 0x170, 0x0, 0x0) at 0xd03c5bcc
malloc_common_81_64(??) at 0xd03512b8
mem.default_malloc_ex() at 0xd0b0f784
CRYPTO_malloc_24_10() at 0xd0b101c8
ssl_cert.ssl_cert_new() at 0xd6f86084
ssl_lib.SSL_CTX_new() at 0xd6f83084

有人遇到过类似的事情吗?搜索以前的问题发现了一些关于 SSL_CTX_new 返回 NULL 的讨论,但没有关于段错误的报告。

这是我用来创建新上下文的函数:

SSL_CTX* newSSLContext(char* keyfile, char* password) {  
SSL_METHOD *meth;
SSL_CTX *ctx;
if (!bio_err) {
SSL_library_init();
SSL_load_error_strings();
bio_err = BIO_new_fp(stderr, BIO_NOCLOSE);
}
signal(SIGPIPE, sigpipe_handle);
meth = SSLv23_method();
ctx = SSL_CTX_new(meth);
if (!(SSL_CTX_use_certificate_chain_file(ctx, keyfile))) {
err("Can't read certificate file");
return NULL;
}
pass = password;
SSL_CTX_set_default_passwd_cb(ctx, password_cb);
if (!(SSL_CTX_use_PrivateKey_file(ctx, keyfile, SSL_FILETYPE_PEM))) {
err("Can't read key file");
return NULL;
}
if (!(SSL_CTX_load_verify_locations(ctx, keyfile, 0))) {
err("Can't read CA list");
return NULL;
}
return ctx;
}

最佳答案

您是否将 bio_err 变量初始化为 NULL?如果您不在 SSL_CTX_new 之前调用 SSL_library_init,就会发生段错误。

关于c - SSL_CTX_new 中的段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12718814/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com