我有這個簡單的程序:OpenSSL的段錯誤
int main()
{
/* INITIALIZING OPENSSL */
SSL_library_init();
SSL_load_error_strings();
ERR_load_BIO_strings();
OpenSSL_add_all_algorithms();
BIO *bio;
connectServerSSL(bio);
login(bio);
}
而這個功能:
void connectServerSSL (BIO *bio)
{
SSL_CTX * ctx = SSL_CTX_new(SSLv23_client_method());
SSL * ssl;
if(! SSL_CTX_load_verify_locations(ctx, NULL, "/etc/ssl/certs"))
{
callError(ERR_LOADCERT);
}
bio = BIO_new_ssl_connect(ctx);
BIO_get_ssl(bio, &ssl);
SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
BIO_set_conn_hostname(bio, hostnamePort);
if(BIO_do_connect(bio) <= 0)
{
callError(ERR_CONNECTION);
}
if(SSL_get_verify_result(ssl) != X509_V_OK)
{
callError(ERR_VALIDCERT);
}
}
當我使用這個:
BIO_WRITE(生物,request.c_str() request.size())
In f聯繫connectServerSSL它工作正常。
但是,當我想在一些其他的功能,使用它:
void login (BIO *bio)
{
BIO_write(bio, request.c_str(), request.size());
}
我得到分割故障(核心轉儲)。
你不返回從'connectServerSSL'你'bio'。 – tkausl
我該怎麼做? –