문제

나는 이런 이상한 호출 스택과 나는 난처하는 이유를 이해합니다.

그것은 나에게 보인다는 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);
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top