[Libreoffice-commits] online.git: loolwsd/LOOLWSD.cpp
Ashod Nakashian
ashod.nakashian at collabora.co.uk
Mon Jan 4 17:14:04 PST 2016
loolwsd/LOOLWSD.cpp | 26 +++++++++++++++++++-------
1 file changed, 19 insertions(+), 7 deletions(-)
New commits:
commit 80941b0b41ca0c315a373ffee46a6af4cf8d4205
Author: Ashod Nakashian <ashod.nakashian at collabora.co.uk>
Date: Mon Jan 4 16:15:02 2016 -0500
loolwsd: bccu#1394 childRoot dir should not be removed, only jails
Change-Id: Id2982728dd36a6a551707334293ecd600852f46f
Reviewed-on: https://gerrit.libreoffice.org/21097
Reviewed-by: Ashod Nakashian <ashnakash at gmail.com>
Tested-by: Ashod Nakashian <ashnakash at gmail.com>
diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp
index a9c7756..bd7dc9f 100644
--- a/loolwsd/LOOLWSD.cpp
+++ b/loolwsd/LOOLWSD.cpp
@@ -323,7 +323,7 @@ public:
Poco::Net::HTMLForm form(request, request.stream(), handler);
if (form.has("childid") && form.has("name"))
{
- const std::string dirPath = LOOLWSD::childRoot + Path::separator() + form.get("childid")
+ const std::string dirPath = LOOLWSD::childRoot + form.get("childid")
+ LOOLSession::jailDocumentURL
+ Path::separator() + "insertfile";
File(dirPath).createDirectory();
@@ -342,10 +342,12 @@ public:
else if (tokens.count() >= 4)
{
// The user might request a file to download
- std::string dirPath = LOOLWSD::childRoot + "/" + tokens[1] + LOOLSession::jailDocumentURL + "/" + tokens[2];
+ const std::string dirPath = LOOLWSD::childRoot + tokens[1]
+ + LOOLSession::jailDocumentURL
+ + Path::separator() + tokens[2];
std::string fileName;
URI::decode(tokens[3], fileName);
- std::string filePath = dirPath + "/" + fileName;
+ const std::string filePath = dirPath + Path::separator() + fileName;
Log::info("HTTP request for: " + filePath);
File file(filePath);
if (file.exists())
@@ -822,12 +824,15 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
// so must check options required in the parent (but not in the
// child) separately now. Also check for options that are
// meaningless for the parent.
- if (sysTemplate == "")
+ if (sysTemplate.empty())
throw MissingOptionException("systemplate");
- if (loTemplate == "")
+ if (loTemplate.empty())
throw MissingOptionException("lotemplate");
- if (childRoot == "")
+
+ if (childRoot.empty())
throw MissingOptionException("childroot");
+ else if (childRoot[childRoot.size() - 1] != Path::separator())
+ childRoot += Path::separator();
if (ClientPortNumber == MASTER_PORT_NUMBER)
throw IncompatibleOptionsException("port");
@@ -957,7 +962,14 @@ int LOOLWSD::main(const std::vector<std::string>& /*args*/)
waitpid(-1, &status, WUNTRACED);
Log::info("Cleaning up childroot directory [" + childRoot + "].");
- Util::removeFile(childRoot, true);
+ std::vector<std::string> jails;
+ File(childRoot).list(jails);
+ for (auto& jail : jails)
+ {
+ const auto path = childRoot + jail;
+ Log::info("Removing jail [" + path + "].");
+ Util::removeFile(path, true);
+ }
Log::info("Process [loolwsd] finished.");
return Application::EXIT_OK;
More information about the Libreoffice-commits
mailing list