diff --git a/libi2pd_client/SAM.cpp b/libi2pd_client/SAM.cpp index 0dc73d721b8..7f97ebbd266 100644 --- a/libi2pd_client/SAM.cpp +++ b/libi2pd_client/SAM.cpp @@ -359,6 +359,21 @@ namespace client } forward = std::make_shared(addr, port); } + + //ensure we actually received a destination + if (destination.empty()) + { + SendMessageReply (SAM_SESSION_STATUS_INVALID_KEY, strlen(SAM_SESSION_STATUS_INVALID_KEY), true); + return; + } + + //ensure it's a base64 string + i2p::data::PrivateKeys keys; + if (!keys.FromBase64(destination)) + { + SendMessageReply(SAM_SESSION_STATUS_INVALID_KEY, strlen(SAM_SESSION_STATUS_INVALID_KEY), true); + return; + } // create destination auto session = m_Owner.CreateSession (id, destination == SAM_VALUE_TRANSIENT ? "" : destination, ¶ms);