Re: Re: Strange behavior with -static compilation flag
Jeffrey Walton <[email protected]> Wed, 26 Apr 2023 23:16:15 -0400
| Newsgroups | gmane.comp.encryption.cryptopp |
|---|---|
| Message-ID | <CAH8yC8kOB4qrgzPAx7X5OZ4dsrwAU=0+D=qu7LN3HHDobgT3rw@mail.gmail.com> |
On Wed, Apr 26, 2023 at 6:13 PM Dwight Kulkarni <[email protected]> wrote: > > I ran address sanitizer: Heap use after free is the problem. I had to use the NEW operator to allocate the ram. What is weird is that usually it will error out right away after it goes out of scope, but this was delayed in recovering the memory, so it was working and then poof the memory disappears, but there is no access violation, it just returns bad result but only sometimes. Other times it is working and if there is a delay then the RAM gets reclaimed in that time and the error occurs right in the middle of the function. Really freaky. > > char* convert_cryptopp_integer_str(Integer n, size_t& msg_len){ > const size_t len = n.MinEncodedSize(Integer::UNSIGNED); > char* v = new char[len]; > msg_len = len; > n.Encode((byte*)v, len, Integer::UNSIGNED); > return v; > } > > std::vector<byte>* convert_cryptopp_integer(Integer n){ > const size_t len = n.MinEncodedSize(Integer::UNSIGNED); > std::vector<byte>* v = new std::vector<byte>(len); > n.Encode((byte*)v, v->size(), Integer::UNSIGNED); > return v; > } So C-ish... Stop managing allocations with new and free. Let the std C++ library do the work for you: std::string convert_cryptopp_integer_str(const CryptoPP::Integer& n) { using namespace CryptoPP; const size_t len = n.MinEncodedSize(Integer::UNSIGNED); std::string v; v.resize(len); n.Encode((byte*)&v[0], v.size(), Integer::UNSIGNED); return v; } std::vector<CryptoPP::byte> convert_cryptopp_integer(const CryptoPP::Integer& n) { using namespace CryptoPP; const size_t len = n.MinEncodedSize(Integer::UNSIGNED); std::vector<byte> v(len); n.Encode((byte*)&v[len], v.size(), Integer::UNSIGNED); return v; } Jeff -- 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 [email protected]. To view this discussion on the web visit https://groups.google.com/d/msgid/cryptopp-users/CAH8yC8kOB4qrgzPAx7X5OZ4dsrwAU%3D0%2BD%3Dqu7LN3HHDobgT3rw%40mail.gmail.com.