[ 
https://issues.apache.org/jira/browse/KUDU-3274?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17322189#comment-17322189
 ] 

ASF subversion and git services commented on KUDU-3274:
-------------------------------------------------------

Commit 5cd8d574c020925e8257dc6d11af4ee516f329b7 in kudu's branch 
refs/heads/master from Attila Bukor
[ https://gitbox.apache.org/repos/asf?p=kudu.git;h=5cd8d57 ]

KUDU-3274 Ignore buffer overflow in libsasl

We recently added a few test cases where the client negotiation fails
with this error (which is what we expect):

GSSAPI Error: Unspecified GSS failure.  Minor code may provide more information 
(Server kudu/127.6.40....@krbtest.com not found in Kerberos database)

Apparently SASL doesn't allocate enough memory for this error message in
some cases which causes these tests to be flaky with a ~20% error rate
with AddressSanitizer enabled:

==9298==ERROR: AddressSanitizer: heap-buffer-overflow on address 0x60e00003e2d6 
at pc 0x000000530bf4 bp 0x7f8eb50ad0f0 sp 0x7f8eb50ac8a0
READ of size 151 at 0x60e00003e2d6 thread T88 (client-negotiat)
    #0 0x530bf3 in __interceptor_strlen.part.35 
sanitizer_common/sanitizer_common_interceptors.inc:365:5
    #1 0x7f8ee6ad9ee8 in std::basic_ostream<char, std::char_traits<char> >& 
std::operator<<<std::char_traits<char> >(std::basic_ostream<char, 
std::char_traits<char> >&, char const*) 
(/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x113ee8)
    #2 0x7f8eeb7c9c9b in kudu::rpc::SaslLogCallback(void*, int, char const*) 
../src/kudu/rpc/sasl_common.cc:102:29
    #3 0x7f8eeb30241c in sasl_seterror 
(/tmp/dist-test-taskexUtyr/build/dist-test-system-libs/libsasl2.so.3+0x1441c)
    #4 0x7f8edd8f143d in _init 
(/tmp/dist-test-taskexUtyr/build/dist-test-system-libs/sasl2/libgssapiv2.so+0x243d)
    #5 0x7f8edd8f2452 in _init 
(/tmp/dist-test-taskexUtyr/build/dist-test-system-libs/sasl2/libgssapiv2.so+0x3452)
    #6 0x7f8eeb2f7844 in sasl_client_step 
(/tmp/dist-test-taskexUtyr/build/dist-test-system-libs/libsasl2.so.3+0x9844)
    #7 0x7f8eeb2f7bc5 in sasl_client_start 
(/tmp/dist-test-taskexUtyr/build/dist-test-system-libs/libsasl2.so.3+0x9bc5)
    #8 0x7f8eeb678679 in 
kudu::rpc::ClientNegotiation::SendSaslInitiate()::$_1::operator()() const 
../src/kudu/rpc/client_negotiation.cc:594:14
    #9 0x7f8eeb67831c in std::_Function_handler<int (), 
kudu::rpc::ClientNegotiation::SendSaslInitiate()::$_1>::_M_invoke(std::_Any_data
 const&) ../../../include/c++/8/bits/std_function.h:282:9
    #10 0x7f8ef3b28220 in std::function<int ()>::operator()() const 
../../../include/c++/8/bits/std_function.h:687:14
    #11 0x7f8eeb7c5840 in kudu::rpc::WrapSaslCall(sasl_conn*, std::function<int 
()> const&, char const*) ../src/kudu/rpc/sasl_common.cc:341:12
    #12 0x7f8eeb67363b in kudu::rpc::ClientNegotiation::SendSaslInitiate() 
../src/kudu/rpc/client_negotiation.cc:593:20
    #13 0x7f8eeb66e0c7 in 
kudu::rpc::ClientNegotiation::AuthenticateBySasl(kudu::faststring*, 
std::unique_ptr<kudu::rpc::ErrorStatusPB, 
std::default_delete<kudu::rpc::ErrorStatusPB> >*) 
../src/kudu/rpc/client_negotiation.cc:523:14
    #14 0x7f8eeb667b99 in 
kudu::rpc::ClientNegotiation::Negotiate(std::unique_ptr<kudu::rpc::ErrorStatusPB,
 std::default_delete<kudu::rpc::ErrorStatusPB> >*) 
../src/kudu/rpc/client_negotiation.cc:220:7
    #15 0x7f8eeb715027 in 
kudu::rpc::DoClientNegotiation(kudu::rpc::Connection*, kudu::TriStateFlag, 
kudu::TriStateFlag, kudu::MonoTime, std::unique_ptr<kudu::rpc::ErrorStatusPB, 
std::default_delete<kudu::rpc::ErrorStatusPB> >*) 
../src/kudu/rpc/negotiation.cc:218:3
    #16 0x7f8eeb712095 in 
kudu::rpc::Negotiation::RunNegotiation(scoped_refptr<kudu::rpc::Connection> 
const&, kudu::TriStateFlag, kudu::TriStateFlag, kudu::MonoTime) 
../src/kudu/rpc/negotiation.cc:295:9
    #17 0x7f8eeb74d4ad in 
kudu::rpc::ReactorThread::StartConnectionNegotiation(scoped_refptr<kudu::rpc::Connection>
 const&)::$_1::operator()() const ../src/kudu/rpc/reactor.cc:614:3
    #18 0x7f8eeb74d06c in std::_Function_handler<void (), 
kudu::rpc::ReactorThread::StartConnectionNegotiation(scoped_refptr<kudu::rpc::Connection>
 const&)::$_1>::_M_invoke(std::_Any_data const&) 
../../../include/c++/8/bits/std_function.h:297:2
    #19 0x71b760 in std::function<void ()>::operator()() const 
../../../include/c++/8/bits/std_function.h:687:14
    #20 0x7f8ee917d03d in kudu::ThreadPool::DispatchThread() 
../src/kudu/util/threadpool.cc:669:7
    #21 0x7f8ee91817dc in kudu::ThreadPool::CreateThread()::$_1::operator()() 
const ../src/kudu/util/threadpool.cc:742:48
    #22 0x7f8ee918162c in std::_Function_handler<void (), 
kudu::ThreadPool::CreateThread()::$_1>::_M_invoke(std::_Any_data const&) 
../../../include/c++/8/bits/std_function.h:297:2
    #23 0x71b760 in std::function<void ()>::operator()() const 
../../../include/c++/8/bits/std_function.h:687:14
    #24 0x7f8ee915660a in kudu::Thread::SuperviseThread(void*) 
../src/kudu/util/thread.cc:674:3
    #25 0x7f8eec6106da in start_thread 
(/lib/x86_64-linux-gnu/libpthread.so.0+0x76da)
    #26 0x7f8ee64de71e in clone (/lib/x86_64-linux-gnu/libc.so.6+0x12171e)

0x60e00003e2d6 is located 0 bytes to the right of 150-byte region 
[0x60e00003e240,0x60e00003e2d6)
allocated by thread T88 (client-negotiat) here:
    #0 0x5a4bb8 in malloc 
/home/abukor/src/kudu/thirdparty/src/llvm-9.0.0.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:145:3
    #1 0x7f8eeb2fa1df in _buf_alloc 
(/tmp/dist-test-taskexUtyr/build/dist-test-system-libs/libsasl2.so.3+0xc1df)

This patch suppresses address sanitizer errors in sasl_seterror().

Change-Id: Ie66e1f14c9750b13676c7e28e6439057a5e73341
Reviewed-on: http://gerrit.cloudera.org:8080/17317
Tested-by: Attila Bukor <abu...@apache.org>
Reviewed-by: Alexey Serbin <aser...@cloudera.com>
Reviewed-by: Grant Henke <granthe...@apache.org>


> Buffer overflow in SASL
> -----------------------
>
>                 Key: KUDU-3274
>                 URL: https://issues.apache.org/jira/browse/KUDU-3274
>             Project: Kudu
>          Issue Type: Bug
>            Reporter: Attila Bukor
>            Priority: Major
>
> There seems to be a buffer overflow in SASL under certain conditions ("Server 
> not found in Kerberos database" error):
> {code}
> ==9298==ERROR: AddressSanitizer: heap-buffer-overflow on address 
> 0x60e00003e2d6 at pc 0x000000530bf4 bp 0x7f8eb50ad0f0 sp 0x7f8eb50ac8a0
> READ of size 151 at 0x60e00003e2d6 thread T88 (client-negotiat)
>     #0 0x530bf3 in __interceptor_strlen.part.35 
> sanitizer_common/sanitizer_common_interceptors.inc:365:5
>     #1 0x7f8ee6ad9ee8 in std::basic_ostream<char, std::char_traits<char> >& 
> std::operator<<<std::char_traits<char> >(std::basic_ostream<char, 
> std::char_traits<char> >&, char const*) 
> (/usr/lib/x86_64-linux-gnu/libstdc++.so.6+0x113ee8)
>     #2 0x7f8eeb7c9c9b in kudu::rpc::SaslLogCallback(void*, int, char const*) 
> ../src/kudu/rpc/sasl_common.cc:102:29
>     #3 0x7f8eeb30241c in sasl_seterror 
> (/tmp/dist-test-taskexUtyr/build/dist-test-system-libs/libsasl2.so.3+0x1441c)
>     #4 0x7f8edd8f143d in _init 
> (/tmp/dist-test-taskexUtyr/build/dist-test-system-libs/sasl2/libgssapiv2.so+0x243d)
>     #5 0x7f8edd8f2452 in _init 
> (/tmp/dist-test-taskexUtyr/build/dist-test-system-libs/sasl2/libgssapiv2.so+0x3452)
>     #6 0x7f8eeb2f7844 in sasl_client_step 
> (/tmp/dist-test-taskexUtyr/build/dist-test-system-libs/libsasl2.so.3+0x9844)
>     #7 0x7f8eeb2f7bc5 in sasl_client_start 
> (/tmp/dist-test-taskexUtyr/build/dist-test-system-libs/libsasl2.so.3+0x9bc5)
>     #8 0x7f8eeb678679 in 
> kudu::rpc::ClientNegotiation::SendSaslInitiate()::$_1::operator()() const 
> ../src/kudu/rpc/client_negotiation.cc:594:14
>     #9 0x7f8eeb67831c in std::_Function_handler<int (), 
> kudu::rpc::ClientNegotiation::SendSaslInitiate()::$_1>::_M_invoke(std::_Any_data
>  const&) ../../../include/c++/8/bits/std_function.h:282:9
>     #10 0x7f8ef3b28220 in std::function<int ()>::operator()() const 
> ../../../include/c++/8/bits/std_function.h:687:14
>     #11 0x7f8eeb7c5840 in kudu::rpc::WrapSaslCall(sasl_conn*, 
> std::function<int ()> const&, char const*) 
> ../src/kudu/rpc/sasl_common.cc:341:12
>     #12 0x7f8eeb67363b in kudu::rpc::ClientNegotiation::SendSaslInitiate() 
> ../src/kudu/rpc/client_negotiation.cc:593:20
>     #13 0x7f8eeb66e0c7 in 
> kudu::rpc::ClientNegotiation::AuthenticateBySasl(kudu::faststring*, 
> std::unique_ptr<kudu::rpc::ErrorStatusPB, 
> std::default_delete<kudu::rpc::ErrorStatusPB> >*) 
> ../src/kudu/rpc/client_negotiation.cc:523:14
>     #14 0x7f8eeb667b99 in 
> kudu::rpc::ClientNegotiation::Negotiate(std::unique_ptr<kudu::rpc::ErrorStatusPB,
>  std::default_delete<kudu::rpc::ErrorStatusPB> >*) 
> ../src/kudu/rpc/client_negotiation.cc:220:7
>     #15 0x7f8eeb715027 in 
> kudu::rpc::DoClientNegotiation(kudu::rpc::Connection*, kudu::TriStateFlag, 
> kudu::TriStateFlag, kudu::MonoTime, std::unique_ptr<kudu::rpc::ErrorStatusPB, 
> std::default_delete<kudu::rpc::ErrorStatusPB> >*) 
> ../src/kudu/rpc/negotiation.cc:218:3
>     #16 0x7f8eeb712095 in 
> kudu::rpc::Negotiation::RunNegotiation(scoped_refptr<kudu::rpc::Connection> 
> const&, kudu::TriStateFlag, kudu::TriStateFlag, kudu::MonoTime) 
> ../src/kudu/rpc/negotiation.cc:295:9
>     #17 0x7f8eeb74d4ad in 
> kudu::rpc::ReactorThread::StartConnectionNegotiation(scoped_refptr<kudu::rpc::Connection>
>  const&)::$_1::operator()() const ../src/kudu/rpc/reactor.cc:614:3
>     #18 0x7f8eeb74d06c in std::_Function_handler<void (), 
> kudu::rpc::ReactorThread::StartConnectionNegotiation(scoped_refptr<kudu::rpc::Connection>
>  const&)::$_1>::_M_invoke(std::_Any_data const&) 
> ../../../include/c++/8/bits/std_function.h:297:2
>     #19 0x71b760 in std::function<void ()>::operator()() const 
> ../../../include/c++/8/bits/std_function.h:687:14
>     #20 0x7f8ee917d03d in kudu::ThreadPool::DispatchThread() 
> ../src/kudu/util/threadpool.cc:669:7
>     #21 0x7f8ee91817dc in kudu::ThreadPool::CreateThread()::$_1::operator()() 
> const ../src/kudu/util/threadpool.cc:742:48
>     #22 0x7f8ee918162c in std::_Function_handler<void (), 
> kudu::ThreadPool::CreateThread()::$_1>::_M_invoke(std::_Any_data const&) 
> ../../../include/c++/8/bits/std_function.h:297:2
>     #23 0x71b760 in std::function<void ()>::operator()() const 
> ../../../include/c++/8/bits/std_function.h:687:14
>     #24 0x7f8ee915660a in kudu::Thread::SuperviseThread(void*) 
> ../src/kudu/util/thread.cc:674:3
>     #25 0x7f8eec6106da in start_thread 
> (/lib/x86_64-linux-gnu/libpthread.so.0+0x76da)
>     #26 0x7f8ee64de71e in clone (/lib/x86_64-linux-gnu/libc.so.6+0x12171e)
> 0x60e00003e2d6 is located 0 bytes to the right of 150-byte region 
> [0x60e00003e240,0x60e00003e2d6)
> allocated by thread T88 (client-negotiat) here:
>     #0 0x5a4bb8 in malloc 
> /home/abukor/src/kudu/thirdparty/src/llvm-9.0.0.src/projects/compiler-rt/lib/asan/asan_malloc_linux.cc:145:3
>     #1 0x7f8eeb2fa1df in _buf_alloc 
> (/tmp/dist-test-taskexUtyr/build/dist-test-system-libs/libsasl2.so.3+0xc1df)
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to