diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/NTCP2.cpp /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/NTCP2.cpp --- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/NTCP2.cpp 2026-07-30 11:06:54.000000000 +0000 +++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/NTCP2.cpp 2026-07-30 11:05:38.000000000 +0000 @@ -397,5 +397,5 @@ if (m_BufferLen > NTCP2_SESSION_HANDSHAKE_MAX_SIZE) m_IsLongPadding = true; m3p2Len = bufbe16toh (options + 4); - if (m3p2Len < 19) // 16 bytes MAC + at least 1 byte block type + 2 bytes block size + if (m3p2Len < 16) { LogPrint (eLogWarning, "NTCP2: SessionRequest m3p2len=", m3p2Len, " is too short"); @@ -844,5 +844,9 @@ if (paddingLen > 0) { - if (m_Establisher->m_BufferLen + paddingLen <= m_Establisher->m_MaxMsgSize) +#if OPENSSL_PQ + if (paddingLen <= m_Establisher->m_MaxMsgSize - 80) +#else + if (paddingLen <= m_Establisher->m_MaxMsgSize - 64) +#endif { boost::asio::async_read (m_Socket, boost::asio::buffer(m_Establisher->m_Buffer + m_Establisher->m_BufferLen, paddingLen), boost::asio::transfer_all (), @@ -986,5 +990,5 @@ } auto size = bufbe16toh (buf->data () + 1); - if (size + 3 > buf->size () || size > i2p::data::MAX_RI_BUFFER_SIZE + 1) + if (size > buf->size () - 3 || size > i2p::data::MAX_RI_BUFFER_SIZE + 1) { LogPrint (eLogError, "NTCP2: Unexpected RouterInfo size ", size, " in SessionConfirmed"); @@ -1302,9 +1306,4 @@ case eNTCP2BlkRouterInfo: { - if (size < 1) - { - LogPrint (eLogWarning, "NTCP2: RouterInfo block is too short"); - break; - } LogPrint (eLogDebug, "NTCP2: RouterInfo flag=", (int)frame[offset]); if (size <= i2p::data::MAX_RI_BUFFER_SIZE + 1)