이상한 호출 스택,그것은 될 수 있는 문제에 asio 의 사용량의 openssl?
-
02-07-2019 - |
문제
나는 이런 이상한 호출 스택과 나는 난처하는 이유를 이해합니다.
그것은 나에게 보인다는 asio 전화 열 ssl 을 읽은 다음에 부정적인 반환 값(-37).
Asio 것을 다음 사용하려고 내부 memcpy 를 함수입니다.
기능는 원인이 되는 이 호출 스택을 사용 hunderds 의 수천의 시간 없이 오류가 있습니다.
그런 일이 드물지만,일주일에 한번 정도.
ulRead = (boost::asio::read(spCon->socket(), boost::asio::buffer(_requestHeader, _requestHeader.size()), boost::asio::transfer_at_least(_requestHeader.size()), error_));
참고하는 요청 헤더의 크기입니다 정확히 3 바이트다.
할 수 있는 사람에 어떤 빛을 발산한 가능한 이유는?
참고:내가 사용하는 향상 asio1.36
여기에 충돌한 호출 스택에서 충돌이 일어나 memcpy 를기 때문에의 거트:
해결책
빠른 보 evp_lib.c 는 그것을 당하고 길이터 암호화 컨텍스트,그리고 당신의 경우에 가져오는 아주 나쁜 가치(tm).그 다음에는 이 값을 사용하여 문자열을 복사하(수행하는 memcpy 를).내 생각은 뭔가 부수고의 암호화,그것은 스레드에 안전 문제 또는 읽기 더 바이트 버퍼로 보 허용됩니다.
관련 원:
int EVP_CIPHER_set_asn1_iv(EVP_CIPHER_CTX *c, ASN1_TYPE *type)
{
int i=0,j;
if (type != NULL)
{
j=EVP_CIPHER_CTX_iv_length(c);
OPENSSL_assert(j <= sizeof c->iv);
i=ASN1_TYPE_set_octetstring(type,c->oiv,j);
}
return(i);
}
제휴하지 않습니다 StackOverflow