loleaflet/src/layer/tile/TileLayer.js |    6 +++++-
 loolwsd/ChildSession.cpp              |    6 ++++--
 2 files changed, 9 insertions(+), 3 deletions(-)

New commits:
commit 2579e1191c0597df42655eca7539c0a0ce9c3d0f
Author: Pranav Kant <pran...@collabora.co.uk>
Date:   Fri Sep 23 15:38:50 2016 +0530

    loolwsd: Prevent passing a nullptr to std::string()
    
    Undefined behavior.
    
    Change-Id: I2ddcb0a5cba1d593791ced62783d02e732162d17

diff --git a/loleaflet/src/layer/tile/TileLayer.js 
b/loleaflet/src/layer/tile/TileLayer.js
index e0197ff..788a962 100644
--- a/loleaflet/src/layer/tile/TileLayer.js
+++ b/loleaflet/src/layer/tile/TileLayer.js
@@ -391,7 +391,11 @@ L.TileLayer = L.GridLayer.extend({
        },
 
        _onCommandValuesMsg: function (textMsg) {
-               var obj = JSON.parse(textMsg.substring(textMsg.indexOf('{')));
+               var jsonIdx = textMsg.indexOf('{');
+               if (jsonIdx === -1) {
+                       return;
+               }
+               var obj = JSON.parse(textMsg.substring(jsonIdx));
                if (obj.commandName == '.uno:DocumentRepair') {
                        this._onDocumentRepair(obj);
                }
diff --git a/loolwsd/ChildSession.cpp b/loolwsd/ChildSession.cpp
index a915e0a..094de82 100644
--- a/loolwsd/ChildSession.cpp
+++ b/loolwsd/ChildSession.cpp
@@ -409,14 +409,16 @@ bool ChildSession::getCommandValues(const char* 
/*buffer*/, int /*length*/, Stri
         const std::string 
json("{\"commandName\":\".uno:DocumentRepair\",\"Redo\":%s,\"Undo\":%s}");
         pValues = _loKitDocument->getCommandValues(".uno:Redo");
         pUndo = _loKitDocument->getCommandValues(".uno:Undo");
-        success = sendTextFrame("commandvalues: " + Poco::format(json, 
std::string(pValues), std::string(pUndo)));
+        success = sendTextFrame("commandvalues: " + Poco::format(json,
+                                                                 
std::string(pValues == nullptr ? "" : pValues),
+                                                                 
std::string(pUndo == nullptr ? "" : pUndo)));
         std::free(pValues);
         std::free(pUndo);
     }
     else
     {
         pValues = _loKitDocument->getCommandValues(command.c_str());
-        success = sendTextFrame("commandvalues: " + std::string(pValues));
+        success = sendTextFrame("commandvalues: " + std::string(pValues == 
nullptr ? "" : pValues));
         std::free(pValues);
     }
 
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to