- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
LPBYTE OUTBUFF = NULL;
DWORD BUFFSIZE = 0;
...
int pgp_res = m_pgp.EncodeBuff2Buff(
( LPCVOID ) ( LPCTSTR ) post_data.c_str(),
( DWORD ) post_data.length(),
OUTBUFF,
BUFFSIZE,
( LPCTSTR ) query_mts_cfg().query_crypto_public_key().c_str() );
...
std::string s;
// мы будем рассматривать буфер как строку, а PGPEncode
// естественно не ограничивает буфер нулевым
// символом, поэтому строку из буфера надо
// ограничивать насильно
s = std::string( ( char* ) OUTBUFF );
s = s.substr( 0, BUFFSIZE );
1) Проблема проявилась после 5 лет боевой эксплуатации.
2) Все загодногожено было именно так. Т.е. автор понимал \0, сделал что-то, но все равно с ошибкой.