diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/daemon/HTTPServer.cpp /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/daemon/HTTPServer.cpp
--- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/daemon/HTTPServer.cpp 2026-09-16 13:00:11.000000000 +0000
+++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/daemon/HTTPServer.cpp 2026-09-16 12:31:21.000000000 +0000
@@ -710,7 +710,5 @@
{
s << "I2CP " << tr("Local Destination") << ":
\r\n
\r\n";
- std::shared_ptr session;
- try { session = i2cpServer->FindSessionByID ((uint16_t)std::stoi (id)); }
- catch (std::exception&) {}
+ auto session = i2cpServer->FindSessionByID ((uint16_t)std::stoi (id));
if (session)
ShowLeaseSetDestination (s, session->GetDestination (), 0);
@@ -1508,17 +1506,5 @@
std::string token = params["token"];
- if (token.empty ())
- {
- ShowError(s, tr("Invalid token"));
- return;
- }
- int tokenValue;
- try { tokenValue = std::stoi (token); }
- catch (std::exception&)
- {
- ShowError(s, tr("Invalid token"));
- return;
- }
- if (m_Tokens.find (tokenValue) == m_Tokens.end ())
+ if (token.empty () || m_Tokens.find (std::stoi (token)) == m_Tokens.end ())
{
ShowError(s, tr("Invalid token"));
diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/daemon/I2PControl.cpp /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/daemon/I2PControl.cpp
--- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/daemon/I2PControl.cpp 2026-09-16 13:00:11.000000000 +0000
+++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/daemon/I2PControl.cpp 2026-09-16 12:31:21.000000000 +0000
@@ -261,9 +261,4 @@
return; // TODO:
}
- if (contentLength > I2P_CONTROL_MAX_CONTENT_LENGTH)
- {
- LogPrint (eLogError, "I2PControl: Content-Length ", contentLength, " exceeds maximum allowed size");
- return;
- }
std::streamoff rem = contentLength + ss.tellg () - bytes_transferred; // more bytes to read
while (rem > 0) // read in chunks to prevent buffer overflow
diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/daemon/I2PControl.h /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/daemon/I2PControl.h
--- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/daemon/I2PControl.h 2026-09-16 13:00:11.000000000 +0000
+++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/daemon/I2PControl.h 2026-09-16 12:31:21.000000000 +0000
@@ -29,5 +29,4 @@
const size_t I2P_CONTROL_MAX_REQUEST_SIZE = 1024;
typedef std::array I2PControlBuffer;
- const size_t I2P_CONTROL_MAX_CONTENT_LENGTH = 65536; // sanity limit on declared HTTP Content-Length
const uint64_t I2P_CONTROL_TOKEN_LIFETIME = 60*60; // 1 hour, in seconds
diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/Identity.cpp /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/Identity.cpp
--- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/Identity.cpp 2026-09-16 13:00:11.000000000 +0000
+++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/Identity.cpp 2026-09-16 12:31:21.000000000 +0000
@@ -557,5 +557,4 @@
{
// offline information
- if (ret + 6 > len) return 0; // expires(4) + key type(2)
const uint8_t * offlineInfo = buf + ret;
uint32_t expires = bufbe32toh (buf + ret); ret += 4; // expires timestamp
diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/NetDb.cpp /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/NetDb.cpp
--- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/NetDb.cpp 2026-09-16 13:00:11.000000000 +0000
+++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/NetDb.cpp 2026-09-16 12:31:21.000000000 +0000
@@ -1420,5 +1420,4 @@
{
auto ts = i2p::util::GetMillisecondsSinceEpoch ();
- std::lock_guard lock(m_LeaseSetsMutex);
for (auto it = m_LeaseSets.begin (); it != m_LeaseSets.end ();)
{
diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/Reseed.cpp /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/Reseed.cpp
--- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/Reseed.cpp 2026-09-16 13:00:11.000000000 +0000
+++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/Reseed.cpp 2026-09-16 12:31:21.000000000 +0000
@@ -271,5 +271,5 @@
{
// TODO: implement all signature types
- if (signatureType == SIGNING_KEY_TYPE_RSA_SHA512_4096 && signatureLength >= SHA512_DIGEST_LENGTH)
+ if (signatureType == SIGNING_KEY_TYPE_RSA_SHA512_4096)
{
size_t pos = s.tellg ();
@@ -283,5 +283,5 @@
{
// calculate digest
- uint8_t digest[SHA512_DIGEST_LENGTH];
+ uint8_t digest[64];
SHA512 (tbs, tbsLen, digest);
// encrypt signature
@@ -295,5 +295,5 @@
// digest is right aligned
// we can't use RSA_verify due wrong padding in SU3
- if (memcmp (enSigBuf + (signatureLength - SHA512_DIGEST_LENGTH), digest, SHA512_DIGEST_LENGTH))
+ if (memcmp (enSigBuf + (signatureLength - 64), digest, 64))
LogPrint (eLogWarning, "Reseed: SU3 signature verification failed");
else
diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/RouterInfo.cpp /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/RouterInfo.cpp
--- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/RouterInfo.cpp 2026-09-16 13:00:11.000000000 +0000
+++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/RouterInfo.cpp 2026-09-16 12:31:21.000000000 +0000
@@ -645,10 +645,9 @@
std::string_view RouterInfo::ExtractString (const uint8_t * buf, size_t len) const
{
- if (!len) return {};
uint8_t l = buf[0];
- if (l > len - 1)
+ if (l > len)
{
LogPrint (eLogWarning, "RouterInfo: String length ", (int)l, " exceeds buffer size ", len);
- l = len - 1;
+ l = len;
}
return { (const char *)(buf + 1), l };
diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/util.cpp /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/util.cpp
--- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd/util.cpp 2026-09-16 13:00:11.000000000 +0000
+++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd/util.cpp 2026-09-16 12:31:21.000000000 +0000
@@ -273,5 +273,5 @@
if (!len) return { };
uint8_t l = buf[0];
- if (l > len - 1) l = len - 1;
+ if (l > len) l = len;
return { (const char *)(buf + 1), l };
}
diff -U2 -r /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd_client/I2CP.cpp /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd_client/I2CP.cpp
--- /var/lib/copr-rpmbuild/results/i2pd-git/upstream-unpacked/Source0/i2pd-openssl/libi2pd_client/I2CP.cpp 2026-09-16 13:00:11.000000000 +0000
+++ /var/lib/copr-rpmbuild/results/i2pd-git/srpm-unpacked/i2pd-openssl.tar.gz-extract/i2pd-openssl/libi2pd_client/I2CP.cpp 2026-09-16 12:31:21.000000000 +0000
@@ -883,9 +883,4 @@
void I2CPSession::CreateLeaseSet2MessageHandler (const uint8_t * buf, size_t len)
{
- if (len < 3)
- {
- LogPrint (eLogError, "I2CP: CreateLeaseSet2Message is too short ", len);
- return;
- }
uint16_t sessionID = bufbe16toh (buf);
if (sessionID == m_SessionID)
@@ -903,9 +898,4 @@
offset += ls.GetBufferLen ();
// private keys
- if (offset >= len)
- {
- LogPrint (eLogError, "I2CP: CreateLeaseSet2Message is too short for private keys");
- return;
- }
int numPrivateKeys = buf[offset]; offset++;
for (int i = 0; i < numPrivateKeys; i++)
@@ -1085,9 +1075,4 @@
void I2CPSession::DestLookupMessageHandler (const uint8_t * buf, size_t len)
{
- if (len < 32)
- {
- LogPrint (eLogError, "I2CP: DestLookupMessage is too short ", len);
- return;
- }
if (m_Destination)
{