From 49569d36e5e8c78d926b1c03df0f216e9bc2ae14 Mon Sep 17 00:00:00 2001 From: orignal Date: Mon, 21 Jul 2025 12:51:40 -0400 Subject: [PATCH] calculate message size properly --- libi2pd_client/SAM.cpp | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/libi2pd_client/SAM.cpp b/libi2pd_client/SAM.cpp index 12b7e286..9986ca5f 100644 --- a/libi2pd_client/SAM.cpp +++ b/libi2pd_client/SAM.cpp @@ -250,28 +250,32 @@ namespace client char * separator = strchr (m_Buffer, ' '); if (separator) { + size_t l = 0; separator = strchr (separator + 1, ' '); if (separator) + { *separator = 0; + l = eol - separator - 1; + } else separator = eol; if (!strcmp (m_Buffer, SAM_SESSION_CREATE)) - ProcessSessionCreate ({ separator + 1, bytes_transferred - (separator - m_Buffer) - 1 }); + ProcessSessionCreate ({ separator + 1, l }); else if (!strcmp (m_Buffer, SAM_STREAM_CONNECT)) ProcessStreamConnect (separator + 1, bytes_transferred - (separator - m_Buffer) - 1, bytes_transferred - (eol - m_Buffer) - 1); else if (!strcmp (m_Buffer, SAM_STREAM_ACCEPT)) - ProcessStreamAccept ({ separator + 1, bytes_transferred - (separator - m_Buffer) - 1 }); + ProcessStreamAccept ({ separator + 1, l }); else if (!strcmp (m_Buffer, SAM_STREAM_FORWARD)) - ProcessStreamForward ({ separator + 1, bytes_transferred - (separator - m_Buffer) - 1 }); + ProcessStreamForward ({ separator + 1, l }); else if (!strcmp (m_Buffer, SAM_DEST_GENERATE)) - ProcessDestGenerate ({ separator + 1, bytes_transferred - (separator - m_Buffer) - 1 }); + ProcessDestGenerate ({ separator + 1, l }); else if (!strcmp (m_Buffer, SAM_NAMING_LOOKUP)) - ProcessNamingLookup ({ separator + 1, bytes_transferred - (separator - m_Buffer) - 1 }); + ProcessNamingLookup ({ separator + 1, l }); else if (!strcmp (m_Buffer, SAM_SESSION_ADD)) - ProcessSessionAdd ({ separator + 1, bytes_transferred - (separator - m_Buffer) - 1 }); + ProcessSessionAdd ({ separator + 1, l }); else if (!strcmp (m_Buffer, SAM_SESSION_REMOVE)) - ProcessSessionRemove ({ separator + 1, bytes_transferred - (separator - m_Buffer) - 1 }); + ProcessSessionRemove ({ separator + 1, l }); else if (!strcmp (m_Buffer, SAM_DATAGRAM_SEND) || !strcmp (m_Buffer, SAM_RAW_SEND)) { size_t len = bytes_transferred - (separator - m_Buffer) - 1;