[Libreoffice-commits] online.git: kit/ChildSession.cpp
Miklos Vajna (via logerrit)
logerrit at kemper.freedesktop.org
Wed Oct 9 07:05:52 UTC 2019
kit/ChildSession.cpp | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
New commits:
commit bb8fc2df43f572109d2ea1b89eebde0890f0d7c7
Author: Miklos Vajna <vmiklos at collabora.com>
AuthorDate: Wed Oct 9 09:04:00 2019 +0200
Commit: Miklos Vajna <vmiklos at collabora.com>
CommitDate: Wed Oct 9 09:05:32 2019 +0200
kit: fix UB in ChildSession::paste()
Seen during unit-large-paste with log level set to trace:
common/SpookyV2.h:139:13: runtime error: load of misaligned address 0x62500042b919 for type 'const uint64' (aka 'const unsigned long'), which requires 8 byte alignment
0x62500042b919: note: pointer points here
74 6d 6c 0a 63 37 30 30 66 36 39 33 61 32 61 62 35 66 36 62 39 33 64 65 64 61 63 36 31 31 66 39
^
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior common/SpookyV2.h:139:13 in
Change-Id: I6f15421bcdead839dac85adae5da10f4b41c04d1
diff --git a/kit/ChildSession.cpp b/kit/ChildSession.cpp
index 7425e4fac..cd38ec7a7 100644
--- a/kit/ChildSession.cpp
+++ b/kit/ChildSession.cpp
@@ -1106,7 +1106,12 @@ bool ChildSession::paste(const char* buffer, int length, const std::vector<std::
{
getLOKitDocument()->setView(_viewId);
- LOG_TRC("Paste data of size " << size << " bytes and hash " << SpookyHash::Hash64(data, size, 0));
+ if (Log::logger().trace())
+ {
+ // Ensure 8 byte alignment for the start of the data, SpookyHash needs it.
+ std::vector<char> toHash(data, data + size);
+ LOG_TRC("Paste data of size " << size << " bytes and hash " << SpookyHash::Hash64(toHash.data(), toHash.size(), 0));
+ }
success = getLOKitDocument()->paste(mimeType.c_str(), data, size);
if (!success)
LOG_WRN("Paste failed " << getLOKitLastError());
More information about the Libreoffice-commits
mailing list