From 3af8708977eb45c7d311daee17b33cb75358ba57 Mon Sep 17 00:00:00 2001 From: Daniel Caujolle-Bert Date: Thu, 20 Jan 2022 13:16:20 +0100 Subject: [PATCH] Expect a space between LinkYSF/LinkFCS and its argument. --- YSFGateway/YSFGateway.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/YSFGateway/YSFGateway.cpp b/YSFGateway/YSFGateway.cpp index e875be6..7a77713 100644 --- a/YSFGateway/YSFGateway.cpp +++ b/YSFGateway/YSFGateway.cpp @@ -881,8 +881,8 @@ void CYSFGateway::processRemoteCommands() int res = m_remoteSocket->read(buffer, 200U, addr, addrLen); if (res > 0) { buffer[res] = '\0'; - if (::memcmp(buffer + 0U, "LinkYSF", 7U) == 0) { - std::string id = std::string((char*)(buffer + 7U)); + if ((::memcmp(buffer + 0U, "LinkYSF", 7U) == 0) && (strlen((char*)buffer + 0U) > 8)) { + std::string id = std::string((char*)(buffer + 8U)); // Left trim id.erase(id.begin(), std::find_if(id.begin(), id.end(), std::not1(std::ptr_fun(std::isspace)))); CYSFReflector* reflector = m_reflectors->findById(id); @@ -912,8 +912,8 @@ void CYSFGateway::processRemoteCommands() LogWarning("Invalid YSF reflector id/name - \"%s\"", id.c_str()); return; } - } else if (::memcmp(buffer + 0U, "LinkFCS", 7U) == 0) { - std::string raw = std::string((char*)(buffer + 7U)); + } else if ((::memcmp(buffer + 0U, "LinkFCS", 7U) == 0) && (strlen((char*)buffer + 0U) > 8)) { + std::string raw = std::string((char*)(buffer + 8U)); // Left trim raw.erase(raw.begin(), std::find_if(raw.begin(), raw.end(), std::not1(std::ptr_fun(std::isspace)))); std::string id = "FCS00";