我正在将openssl用于基于ARM的目标,并且已经从具有FIPS的源交叉编译了OpenSSLv1.0.2l。 我已经使用OpenSSL API实现了基于DTLSv1.2的服务器,并且能够在我的目标上运行它。
我面临的问题是,当出现网络故障时,我尝试清理当前的DTLS会话,但是在SSL_free期间我总是遇到分段错误。
如果我删除SSL_free,则分段错误会消失,但我需要调用它以释放ssl会话内存。
我发现使用GDB进行进一步调试时
(gdb) bt
#0 0xb6e3cc10 in dtls1_get_record () from /usr/lib /libssl.so.1.0.0
#1 0xb6e3d928 in dtls1_read_bytes () from /usr/lib/libssl.so.1.0.0
#2 0xb6e28264 in ssl3_read () from /usr/lib/libssl.so.1.0.0
#3 0x000a7180 in ??()
代码段:
SSL_set_shutdown(p_cinfo->m_pssl, SSL_SENT_SHUTDOWN|SSL_RECEIVED_SHUTDOWN);stat = SSL_shutdown(p_cinfo->m_pssl);
switch(stat)
{
case 1:
printf("Shutdown successfull\n");
break;
case 0:
case -1:
default:
printf("Error Shutting down \n");
print_ssl_err(p_cinfo->m_pssl, stat);
break;
}
SSL_free(p_cinfo->m_pssl);
关于上述问题的任何线索都将非常有帮助。
我也想知道如何识别1.0.2的长期版本 系列,其中包含我可以用于项目的大多数错误修复程序。
谢谢 新泽西州