wsd/ClientSession.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-)
New commits: commit 5d61ef57e8953c490bc2b9985e22bb187992a52a Author: Jan Holesovsky <ke...@collabora.com> Date: Wed Sep 27 10:15:30 2017 +0200 Don't crash when the parameters are missing. Change-Id: I96ace7ad7757e7e0c74dd9f361c78ecff6171a96 Reviewed-on: https://gerrit.libreoffice.org/42859 Reviewed-by: Andras Timar <andras.ti...@collabora.com> Tested-by: Andras Timar <andras.ti...@collabora.com> diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp index 033a963e..89262c7e 100644 --- a/wsd/ClientSession.cpp +++ b/wsd/ClientSession.cpp @@ -63,7 +63,7 @@ bool ClientSession::_handleInput(const char *buffer, int length) { LOG_TRC(getName() << ": handling incoming [" << getAbbreviatedMessage(buffer, length) << "]."); const std::string firstLine = getFirstLine(buffer, length); - const auto tokens = LOOLProtocol::tokenize(firstLine.data(), firstLine.size()); + const std::vector<std::string> tokens = LOOLProtocol::tokenize(firstLine.data(), firstLine.size()); auto docBroker = getDocumentBroker(); if (!docBroker) @@ -83,6 +83,12 @@ bool ClientSession::_handleInput(const char *buffer, int length) if (tokens[0] == "loolclient") { + if (tokens.size() < 1) + { + sendTextFrame("error: cmd=loolclient kind=badprotocolversion"); + return false; + } + const auto versionTuple = ParseVersion(tokens[1]); if (std::get<0>(versionTuple) != ProtocolMajorVersionNumber || std::get<1>(versionTuple) != ProtocolMinorVersionNumber) @@ -208,8 +214,12 @@ bool ClientSession::_handleInput(const char *buffer, int length) { int dontTerminateEdit = 1; int dontSaveIfUnmodified = 1; - getTokenInteger(tokens[1], "dontTerminateEdit", dontTerminateEdit); - getTokenInteger(tokens[2], "dontSaveIfUnmodified", dontSaveIfUnmodified); + if (tokens.size() > 1) + getTokenInteger(tokens[1], "dontTerminateEdit", dontTerminateEdit); + + if (tokens.size() > 2) + getTokenInteger(tokens[2], "dontSaveIfUnmodified", dontSaveIfUnmodified); + docBroker->sendUnoSave(getId(), dontTerminateEdit != 0, dontSaveIfUnmodified != 0); } else _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits