loolwsd/DocumentBroker.cpp | 16 ++++++++++++---- loolwsd/LOOLWSD.cpp | 1 - loolwsd/Storage.cpp | 11 ++++++----- 3 files changed, 18 insertions(+), 10 deletions(-)
New commits: commit ea223f14d2eb883762d88ab02561674083cc9f2b Author: Ashod Nakashian <[email protected]> Date: Sun Apr 17 11:05:39 2016 -0400 loolwsd: storage validation should throw BadRequest on failure Change-Id: I8e9eca96e3e9cef7391a74d72db806e6d1085b01 Reviewed-on: https://gerrit.libreoffice.org/24161 Reviewed-by: Ashod Nakashian <[email protected]> Tested-by: Ashod Nakashian <[email protected]> diff --git a/loolwsd/DocumentBroker.cpp b/loolwsd/DocumentBroker.cpp index 85a8d17..7fdb7b3 100644 --- a/loolwsd/DocumentBroker.cpp +++ b/loolwsd/DocumentBroker.cpp @@ -12,8 +12,9 @@ #include <Poco/Path.h> #include <Poco/SHA1Engine.h> -#include "LOOLWSD.hpp" #include "DocumentBroker.hpp" +#include "Exceptions.hpp" +#include "LOOLWSD.hpp" #include "Storage.hpp" #include "TileCache.hpp" @@ -81,10 +82,17 @@ DocumentBroker::DocumentBroker(const Poco::URI& uriPublic, void DocumentBroker::validate(const Poco::URI& uri) { Log::info("Validating: " + uri.toString()); - auto storage = StorageBase::create("", "", uri); - if (storage == nullptr || !storage->getFileInfo(uri).isValid()) + try + { + auto storage = StorageBase::create("", "", uri); + if (storage == nullptr || !storage->getFileInfo(uri).isValid()) + { + throw BadRequestException("Invalid URI or access denied."); + } + } + catch (const std::exception&) { - throw std::runtime_error("Invalid URI or access denied."); + throw BadRequestException("Invalid URI or access denied."); } } diff --git a/loolwsd/LOOLWSD.cpp b/loolwsd/LOOLWSD.cpp index c608925..9c62d0c 100644 --- a/loolwsd/LOOLWSD.cpp +++ b/loolwsd/LOOLWSD.cpp @@ -705,7 +705,6 @@ public: { Log::error(std::string("ClientRequestHandler::handleRequest: BadRequestException: ") + exc.what()); response.setStatusAndReason(HTTPResponse::HTTP_BAD_REQUEST); - } catch (const std::exception& exc) { diff --git a/loolwsd/Storage.cpp b/loolwsd/Storage.cpp index 67ed5ec..2e227b5 100644 --- a/loolwsd/Storage.cpp +++ b/loolwsd/Storage.cpp @@ -137,11 +137,12 @@ std::unique_ptr<StorageBase> StorageBase::create(const std::string& jailRoot, co ///////////////////// StorageBase::FileInfo LocalStorage::getFileInfo(const Poco::URI& uri) { - const auto& path = uri.getPath(); - Log::debug("Getting info for local uri [" + uri.toString() + "], path [" + path + "]."); - const auto filename = Poco::Path(path).getFileName(); - const auto lastModified = Poco::File(path).getLastModified(); - const auto size = Poco::File(path).getSize(); + const auto path = Poco::Path(uri.getPath()); + Log::debug("Getting info for local uri [" + uri.toString() + "], path [" + path.toString() + "]."); + const auto filename = path.getFileName(); + const auto file = Poco::File(path); + const auto lastModified = file.getLastModified(); + const auto size = file.getSize(); return FileInfo({filename, lastModified, size}); } _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
