net/FakeSocket.cpp | 24 ++++++++++++++---------- net/Socket.hpp | 2 ++ 2 files changed, 16 insertions(+), 10 deletions(-)
New commits: commit 4ce96fb8fff164555b165f9b3692b453b8ff3660 Author: Tor Lillqvist <t...@collabora.com> AuthorDate: Tue Oct 30 00:46:52 2018 +0200 Commit: Tor Lillqvist <t...@collabora.com> CommitDate: Tue Oct 30 00:47:26 2018 +0200 Don't access nonexistent vector element in the EOF case diff --git a/net/FakeSocket.cpp b/net/FakeSocket.cpp index ecbcdc33e..0a4419110 100644 --- a/net/FakeSocket.cpp +++ b/net/FakeSocket.cpp @@ -510,18 +510,22 @@ ssize_t fakeSocketRead(int fd, void *buf, size_t nbytes) return -1; } - // These sockets are record-oriented. It won't work to read less than the whole record in turn - // to be read. - ssize_t result = pair.buffer[K][0].size(); - if (nbytes < result) + ssize_t result = 0; + if (pair.buffer[K].size() > 0) { - loggingBuffer << "FakeSocket EAGAIN: Read from #" << fd << ", " << nbytes << (nbytes == 1 ? " byte" : " bytes") << flush(); - errno = EAGAIN; // Not the right errno, but what would be?q - return -1; - } + // These sockets are record-oriented. It won't work to read less than the whole record in + // turn to be read. + result = pair.buffer[K][0].size(); + if (nbytes < result) + { + loggingBuffer << "FakeSocket EAGAIN: Read from #" << fd << ", " << nbytes << (nbytes == 1 ? " byte" : " bytes") << flush(); + errno = EAGAIN; // Not the right errno, but what would be? + return -1; + } - memmove(buf, pair.buffer[K][0].data(), result); - pair.buffer[K].erase(pair.buffer[K].begin()); + memmove(buf, pair.buffer[K][0].data(), result); + pair.buffer[K].erase(pair.buffer[K].begin()); + } // If peer is closed or shut down, we continue to be readable if (pair.fd[N] == -1 || pair.shutdown[N]) commit 9fec3b0e277c6dc9a979bd2afeb07aee4a0a54c5 Author: Tor Lillqvist <t...@collabora.com> AuthorDate: Tue Oct 30 00:45:55 2018 +0200 Commit: Tor Lillqvist <t...@collabora.com> CommitDate: Tue Oct 30 00:47:21 2018 +0200 Handle EOF case (when fakeSocketAvailableDataLength() returns 0) diff --git a/net/Socket.hpp b/net/Socket.hpp index 3a28bffdd..e62b01039 100644 --- a/net/Socket.hpp +++ b/net/Socket.hpp @@ -893,6 +893,8 @@ public: ssize_t len; if (available == -1) len = -1; + else if (available == 0) + len = 0; else { std::vector<char>buf(available); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits