Botan :: SecureVector - 构造函数中调用的析构函数?

问题描述:

当在下面的单元测试使用牡丹:: SecureVector:尝试,因为它试图其施工过程中解除分配缓冲器来分配SecureVector当发生Botan :: SecureVector - 构造函数中调用的析构函数?

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'?)或仅仅是一个错字? – 2010-05-25 16:06:48

+0

好抓;这是一个错字。 – 2010-05-25 16:09:14

+1

你在这里遇到的是一个错误;它在3月份被发现和修复(但是一个新的稳定版本没有被旋转,所以它仍然在那里)。它只发生在图书馆没有初始化的时候,但是肯定会发生崩溃从来都不是好行为。初始化是必需的,因为SecureVector希望能够访问管理锁定内存的共享池分配器。顺便说一句,我建议如果你遇到与botan有关的进一步问题尝试botan-devel邮件列表 - 那里的人友好,知道图书馆,并且经常可以快速得到答案。 – 2010-06-07 22:26:49

添加一行:

LibraryInitializer botanInit; 

工作。

这在我看来是奇怪的行为,所以我想我应该发布它。