Я использую openssl для цели на основе ARM, и я кросс-скомпилировал OpenSSLv1.0.2l из источников с FIPS.Я реализовал сервер на базе DTLSv1.2 с помощью API-интерфейсов OpenSSL и смог запустить его на своей цели.
Проблема, с которой я сталкиваюсь, - когда происходит сбой сети, я пытаюсь очистить текущий сеанс 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;<br>
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 с большинством исправлений ошибок, которые я мог бы использовать для своего проекта.
Спасибо, NJ