add base64 buffer encoding bounds checking

This commit is contained in:
Jeff Becker 2016-02-05 08:44:09 -05:00
parent 98d5e0b56d
commit d0ea59c568
No known key found for this signature in database
GPG key ID: AB950234D6EA286B
3 changed files with 30 additions and 11 deletions

11
SAM.cpp
View file

@ -631,10 +631,15 @@ namespace client
m_SocketType = eSAMSocketTypeStream;
if (!m_IsSilent)
{
// send remote peer address
uint8_t ident[1024];
size_t l = stream->GetRemoteIdentity ()->ToBuffer (ident, 1024);
// get remote peer address
auto ident_ptr = stream->GetRemoteIdentity();
size_t ident_len = ident_ptr->GetFullLen();
uint8_t* ident = new uint8_t[ident_len];
// send remote peer address as base64
size_t l = ident_ptr->ToBuffer (ident, ident_len);
size_t l1 = i2p::data::ByteStreamToBase64 (ident, l, (char *)m_StreamBuffer, SAM_SOCKET_BUFFER_SIZE);
delete[] ident;
m_StreamBuffer[l1] = '\n';
HandleI2PReceive (boost::system::error_code (), l1 +1); // we send identity like it has been received from stream
}