fuzzer/data/crash-32e5136d2291e6c5fa99aa5942acded42b66a528 |binary
 wsd/ClientSession.cpp                                      |    2 +-
 2 files changed, 1 insertion(+), 1 deletion(-)

New commits:
commit aefc65465b255e09ee2f66cbebaf1b2e54ded40c
Author:     Miklos Vajna <vmik...@collabora.com>
AuthorDate: Fri Feb 21 16:27:58 2020 +0100
Commit:     Michael Meeks <michael.me...@collabora.com>
CommitDate: Sat Feb 22 12:18:34 2020 +0100

    wsd: fix crash when downloadas has not enough parameters
    
    ==11898==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000000 
(pc 0x0000007c4f87 bp 0x7fffe45dfe90 sp 0x7fffe45df608 T0)
    ==11898==The signal is caused by a READ memory access.
    ==11898==Hint: address points to the zero page.
        #0 0x7c4f86 in AddressIsPoisoned 
lode/packages/llvm-472c6ef8b0f53061b049039f9775ab127beafbe4.src/compiler-rt/lib/asan/asan_mapping.h:397
        #1 0x7c4f86 in __asan::QuickCheckForUnpoisonedRegion(unsigned long, 
unsigned long) 
lode/packages/llvm-472c6ef8b0f53061b049039f9775ab127beafbe4.src/compiler-rt/lib/asan/asan_interceptors_memintrinsics.h:31
        #2 0x816436 in MemcmpInterceptorCommon(void*, int (*)(void const*, void 
const*, unsigned long), void const*, void const*, unsigned long) 
lode/packages/llvm-472c6ef8b0f53061b049039f9775ab127beafbe4.src/compiler-rt/lib/asan/../sanitizer_common/sanitizer_common_interceptors.inc:834
        #3 0x816d38 in memcmp 
lode/packages/llvm-472c6ef8b0f53061b049039f9775ab127beafbe4.src/compiler-rt/lib/asan/../sanitizer_common/sanitizer_common_interceptors.inc:866
        #4 0x7f1964437595 in std::char_traits<char>::compare(char const*, char 
const*, unsigned long) 
lode/packages/gccbuild/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/char_traits.h:310
        #5 0x7f1964437595 in std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> >::compare(unsigned long, unsigned 
long, std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > const&) const 
lode/packages/gccbuild/x86_64-pc-linux-gnu/libstdc++-v3/include/bits/basic_string.tcc:1391
        #6 0x18e206d in 
LOOLProtocol::getTokenString(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&, 
std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > 
const&, std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> >&) common/Protocol.cpp:141:19
        #7 0x117cc0a in 
ClientSession::filterMessage(std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> > const&) const 
wsd/ClientSession.cpp:940:13
        #8 0x116b832 in ClientSession::_handleInput(char const*, int) 
wsd/ClientSession.cpp:741:14
        #9 0x18f70d0 in Session::handleMessage(bool, WSOpCode, 
std::vector<char, std::allocator<char> >&) common/Session.cpp:230:13
    
    Change-Id: I0c7da6c02ac62bf0bc99557517fc7c517917046c
    Reviewed-on: https://gerrit.libreoffice.org/c/online/+/89229
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>
    Reviewed-by: Michael Meeks <michael.me...@collabora.com>

diff --git a/fuzzer/data/crash-32e5136d2291e6c5fa99aa5942acded42b66a528 
b/fuzzer/data/crash-32e5136d2291e6c5fa99aa5942acded42b66a528
new file mode 100644
index 000000000..5fc870ec6
Binary files /dev/null and 
b/fuzzer/data/crash-32e5136d2291e6c5fa99aa5942acded42b66a528 differ
diff --git a/wsd/ClientSession.cpp b/wsd/ClientSession.cpp
index 1442b4a23..1c9ac7e66 100644
--- a/wsd/ClientSession.cpp
+++ b/wsd/ClientSession.cpp
@@ -937,7 +937,7 @@ bool ClientSession::filterMessage(const std::string& 
message) const
     if (tokens[0] == "downloadas")
     {
         std::string id;
-        if (getTokenString(tokens[2], "id", id))
+        if (tokens.size() >= 3 && getTokenString(tokens[2], "id", id))
         {
             if (id == "print" && _wopiFileInfo && 
_wopiFileInfo->getDisablePrint())
             {
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to