main.connect_debug [ fail ]
|
Test ended at 2018-08-22 14:25:22
|
|
CURRENT_TEST: main.connect_debug
|
=================================================================
|
==24535==ERROR: AddressSanitizer: heap-use-after-free on address 0x629000005200 at pc 0x00000059f752 bp 0x7ffc5fe6b320 sp 0x7ffc5fe6b318
|
READ of size 1 at 0x629000005200 thread T0
|
#0 0x59f751 in client_mpvio_read_packet /mariadb/10.2/libmariadb/plugins/auth/my_auth.c:361:18
|
#1 0x5a0fb0 in auth_old_password /mariadb/10.2/libmariadb/plugins/auth/old_password.c:91:19
|
#2 0x59ed07 in run_plugin_auth /mariadb/10.2/libmariadb/plugins/auth/my_auth.c:548:8
|
#3 0x557786 in mthd_my_real_connect /mariadb/10.2/libmariadb/libmariadb/mariadb_lib.c:1501:7
|
#4 0x556232 in mysql_real_connect /mariadb/10.2/libmariadb/libmariadb/mariadb_lib.c:1186:10
|
#5 0x53a9f9 in do_connect(st_mysql*, char const*, char const*, char const*, char const*, unsigned long) /mariadb/10.2/client/mysql.cc:1391:10
|
#6 0x547035 in sql_real_connect(char*, char*, char*, char*, unsigned int) /mariadb/10.2/client/mysql.cc:4706:8
|
#7 0x5394a5 in sql_connect(char*, char*, char*, char*, unsigned int) /mariadb/10.2/client/mysql.cc:4754:16
|
#8 0x5386ea in main /mariadb/10.2/client/mysql.cc:1209:7
|
#9 0x7fdf660edb16 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x22b16)
|
#10 0x43be19 in _start (/dev/shm/10.2/client/mysql+0x43be19)
|
|
0x629000005200 is located 0 bytes inside of 16384-byte region [0x629000005200,0x629000009200)
|
freed by thread T0 here:
|
#0 0x500a20 in __interceptor_free.localalias.0 (/dev/shm/10.2/client/mysql+0x500a20)
|
#1 0x5a9612 in ma_net_end /mariadb/10.2/libmariadb/libmariadb/ma_net.c:114:3
|
|
previously allocated by thread T0 here:
|
#0 0x500bf0 in __interceptor_malloc (/dev/shm/10.2/client/mysql+0x500bf0)
|
#1 0x5a91f3 in ma_net_init /mariadb/10.2/libmariadb/libmariadb/ma_net.c:83:28
|
#2 0x556232 in mysql_real_connect /mariadb/10.2/libmariadb/libmariadb/mariadb_lib.c:1186:10
|
#3 0x53a9f9 in do_connect(st_mysql*, char const*, char const*, char const*, char const*, unsigned long) /mariadb/10.2/client/mysql.cc:1391:10
|
|
SUMMARY: AddressSanitizer: heap-use-after-free /mariadb/10.2/libmariadb/plugins/auth/my_auth.c:361:18 in client_mpvio_read_packet
|
Shadow bytes around the buggy address:
|
0x0c527fff89f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
0x0c527fff8a00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
0x0c527fff8a10: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
0x0c527fff8a20: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
0x0c527fff8a30: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
|
=>0x0c527fff8a40:[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
|
0x0c527fff8a50: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
|
0x0c527fff8a60: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
|
0x0c527fff8a70: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
|
0x0c527fff8a80: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
|
0x0c527fff8a90: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
|
Shadow byte legend (one shadow byte represents 8 application bytes):
|
Addressable: 00
|
Partially addressable: 01 02 03 04 05 06 07
|
Heap left redzone: fa
|
Freed heap region: fd
|
Stack left redzone: f1
|
Stack mid redzone: f2
|
Stack right redzone: f3
|
Stack after return: f5
|
Stack use after scope: f8
|
Global redzone: f9
|
Global init order: f6
|
Poisoned by user: f7
|
Container overflow: fc
|
Array cookie: ac
|
Intra object redzone: bb
|
ASan internal: fe
|
Left alloca redzone: ca
|
Right alloca redzone: cb
|
==24535==ABORTING
|
Aborted
|
mysqltest: At line 10: command "$MYSQL --default-auth=mysql_old_password --user=bad --password=worse" failed with wrong error: 134
|
I can still repeat the problem.
10.2 b0ef1b388bff28b93bfdf83a97723a56c869ca34, libmariadb v3.0.6
main.connect_debug [ fail ]
Test ended at 2018-08-22 14:25:22
CURRENT_TEST: main.connect_debug
=================================================================
==24535==ERROR: AddressSanitizer: heap-use-after-free on address 0x629000005200 at pc 0x00000059f752 bp 0x7ffc5fe6b320 sp 0x7ffc5fe6b318
READ of size 1 at 0x629000005200 thread T0
#0 0x59f751 in client_mpvio_read_packet /mariadb/10.2/libmariadb/plugins/auth/my_auth.c:361:18
#1 0x5a0fb0 in auth_old_password /mariadb/10.2/libmariadb/plugins/auth/old_password.c:91:19
#2 0x59ed07 in run_plugin_auth /mariadb/10.2/libmariadb/plugins/auth/my_auth.c:548:8
#3 0x557786 in mthd_my_real_connect /mariadb/10.2/libmariadb/libmariadb/mariadb_lib.c:1501:7
#4 0x556232 in mysql_real_connect /mariadb/10.2/libmariadb/libmariadb/mariadb_lib.c:1186:10
#5 0x53a9f9 in do_connect(st_mysql*, char const*, char const*, char const*, char const*, unsigned long) /mariadb/10.2/client/mysql.cc:1391:10
#6 0x547035 in sql_real_connect(char*, char*, char*, char*, unsigned int) /mariadb/10.2/client/mysql.cc:4706:8
#7 0x5394a5 in sql_connect(char*, char*, char*, char*, unsigned int) /mariadb/10.2/client/mysql.cc:4754:16
#8 0x5386ea in main /mariadb/10.2/client/mysql.cc:1209:7
#9 0x7fdf660edb16 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x22b16)
#10 0x43be19 in _start (/dev/shm/10.2/client/mysql+0x43be19)
0x629000005200 is located 0 bytes inside of 16384-byte region [0x629000005200,0x629000009200)
freed by thread T0 here:
#0 0x500a20 in __interceptor_free.localalias.0 (/dev/shm/10.2/client/mysql+0x500a20)
#1 0x5a9612 in ma_net_end /mariadb/10.2/libmariadb/libmariadb/ma_net.c:114:3
previously allocated by thread T0 here:
#0 0x500bf0 in __interceptor_malloc (/dev/shm/10.2/client/mysql+0x500bf0)
#1 0x5a91f3 in ma_net_init /mariadb/10.2/libmariadb/libmariadb/ma_net.c:83:28
#2 0x556232 in mysql_real_connect /mariadb/10.2/libmariadb/libmariadb/mariadb_lib.c:1186:10
#3 0x53a9f9 in do_connect(st_mysql*, char const*, char const*, char const*, char const*, unsigned long) /mariadb/10.2/client/mysql.cc:1391:10
SUMMARY: AddressSanitizer: heap-use-after-free /mariadb/10.2/libmariadb/plugins/auth/my_auth.c:361:18 in client_mpvio_read_packet
Shadow bytes around the buggy address:
0x0c527fff89f0: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c527fff8a00: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c527fff8a10: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c527fff8a20: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
0x0c527fff8a30: fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa fa
=>0x0c527fff8a40:[fd]fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c527fff8a50: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c527fff8a60: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c527fff8a70: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c527fff8a80: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
0x0c527fff8a90: fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd fd
Shadow byte legend (one shadow byte represents 8 application bytes):
Addressable: 00
Partially addressable: 01 02 03 04 05 06 07
Heap left redzone: fa
Freed heap region: fd
Stack left redzone: f1
Stack mid redzone: f2
Stack right redzone: f3
Stack after return: f5
Stack use after scope: f8
Global redzone: f9
Global init order: f6
Poisoned by user: f7
Container overflow: fc
Array cookie: ac
Intra object redzone: bb
ASan internal: fe
Left alloca redzone: ca
Right alloca redzone: cb
==24535==ABORTING
Aborted
mysqltest: At line 10: command "$MYSQL --default-auth=mysql_old_password --user=bad --password=worse" failed with wrong error: 134
Note: I had to edit cmake/submodules.cmake to force the use of libmariadb v3.0.6:
(cd libmariadb; git checkout v3.0.6)
$EDITOR cmake/submodules.cmake
mkdir build
cd build
CC=clang-6.0 CXX=clang++-6.0 CFLAGS=-O1 CXXFLAGS=-O1 cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_ASAN:BOOL=ON ..
cd mysql-test
ASAN_OPTIONS=abort_on_error=1,detect_leaks=0 ./mtr main.connect_debug