From b70e501d6de339143b6129c6b5e61a02fab56396 Mon Sep 17 00:00:00 2001 From: Oliver Giles Date: Wed, 6 Dec 2017 09:24:35 +0200 Subject: [PATCH] attempt to solve segfault under hardened gentoo Can't reproduce this locally, but looks like using a std::string as an arbitrary buffer is causing problems. See #19 --- src/server.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/server.cpp b/src/server.cpp index d42848e..5ccb72d 100644 --- a/src/server.cpp +++ b/src/server.cpp @@ -456,9 +456,8 @@ void Server::acceptRpcClient(kj::Own&& listener) { // wrapped by stream and invoke the provided callback with the read data. // Repeats until ::read returns <= 0 kj::Promise Server::handleFdRead(kj::AsyncInputStream* stream, std::function cb) { - std::string buffer; - buffer.reserve(PROC_IO_BUFSIZE); - return stream->tryRead((void*)buffer.data(), 1, PROC_IO_BUFSIZE).then(kj::mvCapture(kj::mv(buffer), [this,stream,cb](std::string&& buffer, size_t sz) { + std::vector buffer(PROC_IO_BUFSIZE); + return stream->tryRead((void*)buffer.data(), 1, PROC_IO_BUFSIZE).then(kj::mvCapture(kj::mv(buffer), [this,stream,cb](std::vector&& buffer, size_t sz) { if(sz > 0) { cb(buffer.data(), sz); return handleFdRead(stream, cb);