From ae1e063d9e5fc97447b8b3299d8872e39c300ab6 Mon Sep 17 00:00:00 2001 From: Guillaume Roguez <guillaume.roguez@savoirfairelinux.com> Date: Tue, 19 Jan 2016 16:21:00 -0500 Subject: [PATCH] ring_account: force UTF8 validation for IncomingAccountMessage Invalid UTF-8 string cause D-BUS exception if given as string object. This patch fixes that by forcing validation of incoming IM from DHT. This validation strip-out invalid byte sequence. Change-Id: I1d599664d767df7a3796f5afd93afc61178baaae Tuleap: #239 --- src/ringdht/ringaccount.cpp | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/ringdht/ringaccount.cpp b/src/ringdht/ringaccount.cpp index bba1c6053a..df4cce7241 100644 --- a/src/ringdht/ringaccount.cpp +++ b/src/ringdht/ringaccount.cpp @@ -44,6 +44,7 @@ #include "account_schema.h" #include "logger.h" #include "manager.h" +#include "utf8_utils.h" #ifdef RING_VIDEO #include "libav_utils.h" @@ -66,6 +67,7 @@ #include <sstream> #include <cctype> #include <cstdarg> +#include <string> namespace ring { @@ -894,10 +896,9 @@ RingAccount::doRegister_() return true; auto from = v.from.toString(); - std::map<std::string, std::string> msg = {{"text/plain", v.msg}}; - RING_DBG("Text message received from DHT from %s, %zu part(s)", - from.c_str(), msg.size()); - emitSignal<DRing::ConfigurationSignal::IncomingAccountMessage>(this_.getAccountID(), from, msg); + std::map<std::string, std::string> payloads = {{"text/plain", + utf8_make_valid(v.msg)}}; + shared->onTextMessage(from, payloads); return true; } ); -- GitLab