diff --git a/src/BuddyManager.cpp b/src/BuddyManager.cpp index a7b3b03..e72a2aa 100644 --- a/src/BuddyManager.cpp +++ b/src/BuddyManager.cpp @@ -673,7 +673,7 @@ void BuddyManager::emailSend(CNSocket* sock, CNPacketData* data) { U16toU8(plr->PCStyle.szFirstName), // SenderFirstName U16toU8(plr->PCStyle.szLastName), // SenderLastName ChatManager::sanitizeText(U16toU8(pkt->szSubject)), // SubjectLine - ChatManager::sanitizeText(U16toU8(pkt->szContent)), // MsgBody + ChatManager::sanitizeText(U16toU8(pkt->szContent), true), // MsgBody pkt->iCash, // Taros (uint64_t)getTimestamp(), // SendTime 0 // DeleteTime (unimplemented) diff --git a/src/ChatManager.cpp b/src/ChatManager.cpp index 38cfaa3..b52128f 100644 --- a/src/ChatManager.cpp +++ b/src/ChatManager.cpp @@ -850,7 +850,7 @@ void ChatManager::announcementHandler(CNSocket* sock, CNPacketData* data) { } // we only allow plain ascii, at least for now -std::string ChatManager::sanitizeText(std::string text) { +std::string ChatManager::sanitizeText(std::string text, bool allowNewlines) { int i; char buf[128]; @@ -858,6 +858,10 @@ std::string ChatManager::sanitizeText(std::string text) { for (char c : text) { if (i >= 127) break; + + if (!allowNewlines && c == '\n') + continue; + if (c >= ' ' && c <= '~') buf[i++] = c; } diff --git a/src/ChatManager.hpp b/src/ChatManager.hpp index 59a8125..6a84792 100644 --- a/src/ChatManager.hpp +++ b/src/ChatManager.hpp @@ -29,5 +29,5 @@ namespace ChatManager { void sendServerMessage(CNSocket* sock, std::string msg); // uses MOTD void announcementHandler(CNSocket* sock, CNPacketData* data); - std::string sanitizeText(std::string text); + std::string sanitizeText(std::string text, bool allowNewlines=false); }