2010-05-25 3 views
2

다음 단위 테스트에 모란 :: SecureVector를 사용 : 그것 건설 중에 버퍼 할당을 해제하려고으로 SecureVector를 할당 할 때Botan :: SecureVector - 생성자에서 Destructor가 호출 되었습니까?

void UnitTest() 
{ 
    std::vector<byte> vbData; 
    vbData.push_back(0x04); 
    vbData.push_back(0x04); 
    vbData.push_back(0x04); 

    Botan::SecureVector<Botan::byte> svData(&vbData[0], vbData.size()); 
    CPPUNIT_ASSERT(vbData == std::vector<byte>(svData.begin(), svData.end())); 
} 

세그먼트 오류가 발생합니다.

+1

'vbData'라는 벡터를 선언 한 다음 'bbData'라는 벡터를 사용합니다 (첫 번째 문자가 다릅니다). 그게 잠재적으로 오류일까요 (전역'bbData'가 있습니까?) 아니면 그냥 오타입니까? –

+0

좋은 캐치; 오타 였어. –

+1

여기서 발생한 문제는 버그입니다. 그것은 3 월에 발견되고 고쳐졌지만 (그러나 새로운 안정된 방출은 회전되지 않았으므로 여전히 거기에있다.) 라이브러리가 초기화되지 않았을 때만 발생했지만 확실히 크래시는 결코 좋은 행동이 아닙니다. SecureVector가 잠긴 메모리를 관리하는 공유 풀링 할당자를 액세스 할 수 있기를 원하기 때문에 초기화가 필요합니다. BTW, botan-devel 메일 링리스트를 시도하기 위해 botan에게 더 많은 문제가 생기면 제안 할 수 있습니다. 사람들은 친숙하고 도서관을 알고 있으며 종종 신속하게 답변을 얻을 수 있습니다. –

답변

3

추가 라인 :

LibraryInitializer botanInit; 

가 작동합니다.

이것은 이상한 행동 인 것처럼 보였기 때문에 게시해야한다고 생각했습니다.

관련 문제