From 3df9a54a454cb8045197a9c4b01220248b78a651 Mon Sep 17 00:00:00 2001
From: philippegorley <philippe.gorley@savoirfairelinux.com>
Date: Wed, 14 Feb 2018 15:15:54 -0500
Subject: [PATCH] sanitize ice data before printing
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Remove garbage characters before printing the ice data

Change-Id: I4bb29228adfc375519878738d091dab7e57bd5bf
Reviewed-by: Sébastien Blin <sebastien.blin@savoirfairelinux.com>
---
 src/ringdht/ringaccount.cpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/src/ringdht/ringaccount.cpp b/src/ringdht/ringaccount.cpp
index 3fd7ac0468..5ebcfbec62 100644
--- a/src/ringdht/ringaccount.cpp
+++ b/src/ringdht/ringaccount.cpp
@@ -459,8 +459,12 @@ RingAccount::startOutgoingCall(const std::shared_ptr<SIPCall>& call, const std::
                 [weak_dev_call, ice, callvid, dev] (dht::IceCandidates&& msg) {
                     if (msg.id != callvid or msg.from != dev)
                         return true;
-                    RING_WARN("ICE request replied from DHT peer %s\n%s", dev.toString().c_str(),
-                              std::string(msg.ice_data.cbegin(), msg.ice_data.cend()).c_str());
+                    // remove unprintable characters
+                    auto iceData = std::string(msg.ice_data.cbegin(), msg.ice_data.cend());
+                    iceData.erase(std::remove_if(iceData.begin(), iceData.end(),
+                                                 [](unsigned char c){ return !std::isprint(c) && !std::isspace(c); }
+                                                ), iceData.end());
+                    RING_WARN("ICE request replied from DHT peer %s\nData: %s", dev.toString().c_str(), iceData.c_str());
                     if (auto call = weak_dev_call.lock()) {
                         call->setState(Call::ConnectionState::PROGRESSING);
                         if (!ice->start(msg.ice_data)) {
-- 
GitLab