From c9af47cde1626f919a7e18a3007c3c81eda467af Mon Sep 17 00:00:00 2001 From: Lotte Steenbrink Date: Fri, 19 Oct 2018 23:23:50 +0200 Subject: [PATCH] connection.cpp: Check return value of write() --- src/server/connection.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/server/connection.cpp b/src/server/connection.cpp index 9cb478afc..36d3a1a86 100644 --- a/src/server/connection.cpp +++ b/src/server/connection.cpp @@ -1,3 +1,8 @@ +#include "osrm/error_codes.hpp" + +#include "util/exception.hpp" +#include "util/exception_utils.hpp" + #include "server/connection.hpp" #include "server/request_handler.hpp" #include "server/request_parser.hpp" @@ -140,10 +145,15 @@ std::vector Connection::compress_buffers(const std::vector &uncompre boost::iostreams::filtering_ostream gzip_stream; gzip_stream.push(boost::iostreams::gzip_compressor(compression_parameters)); gzip_stream.push(boost::iostreams::back_inserter(compressed_data)); - gzip_stream.write(&uncompressed_data[0], uncompressed_data.size()); + const auto &result = gzip_stream.write(&uncompressed_data[0], uncompressed_data.size()); + if (!result) + { + throw util::RuntimeError( + "compress_buffers", ErrorCode::FileWriteError, SOURCE_REF, std::strerror(errno)); + } boost::iostreams::close(gzip_stream); return compressed_data; } -} -} +} // namespace server +} // namespace osrm