Hi, I am experiencing Segfault inside CryptoPP::StreamTransformationFilter.
*Overview:* I have downloaded and built CryptoPP as an external CMake module. *Problem:* This segfault is happening only in Linux(Ubuntu 18.04.05LTS) *Release build* . 64-bit,compiler clang 6.0 *GDB BT* Thread 9 "***" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fffdb7fe700 (LWP 5835)] 0x0000000000000000 in ?? () (gdb) bt #0 0x0000000000000000 in ?? () #1 *0x0000000000b7559d in CryptoPP::StreamTransformationFilter::StreamTransformationFilter (this=0x7fffdb7fd1c0, c=..., attachment=<optimized out>,* *padding=<optimized out>) at filters.cpp:593* #2 0x00000000004ff4fd in ***::AESEncryptDecryptUtility::decrypt(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) () *Trials to resolve this issue:* If I build my target where I am using CryptoPP( static lib) with *optimization level O1 or less, then no segfault observed. But this issue is with optimization level O2 or more.* *Code snippet:* std::string AESEncryptDecryptUtility::decrypt(const std::string& encrypted_text) { std::string decrypted_text; CryptoPP::AES::Decryption aesDecryption(key_.data(), KEY_LENGTH); CryptoPP::CBC_Mode_ExternalCipher::Decryption cbcDecryption(aesDecryption, iv_.data()); CryptoPP::*StreamTransformationFilter *stfDecryptor(cbcDecryption, new CryptoPP::StringSink(decrypted_text)); stfDecryptor.Put(reinterpret_cast<const unsigned char*>(encrypted_text.c_str()), encrypted_text.size()); stfDecryptor.MessageEnd(); return decrypted_text; Inside *StreamTransformationFilter() *where it's crashing, the line highlighted in Red is pointing in GDB as the last point before the crash(segfault) StreamTransformationFilter::StreamTransformationFilter(StreamTransformation &c, BufferedTransformation *attachment, BlockPaddingScheme padding) : FilterWithBufferedInput(attachment), m_cipher(c), m_padding(DEFAULT_PADDING) { CRYPTOPP_ASSERT(c.MinLastBlockSize() == 0 || c.MinLastBlockSize() > c.MandatoryBlockSize()); const bool authenticatedFilter = dynamic_cast<AuthenticatedSymmetricCipher *>(&c) != NULLPTR; if (authenticatedFilter) throw InvalidArgument("StreamTransformationFilter: please use AuthenticatedEncryptionFilter and AuthenticatedDecryptionFilter for AuthenticatedSymmetricCipher"); // InitializeDerivedAndReturnNewSizes may override some of these m_mandatoryBlockSize = m_cipher.MandatoryBlockSize(); Please let me know if any other information needed. Regards, Sunandan -- You received this message because you are subscribed to the Google Groups "Crypto++ Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to cryptopp-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/cryptopp-users/e6c860f6-1e74-4372-b4de-691e0692747bn%40googlegroups.com.