Bug #91604 stack-use-after-scope in _db_enter_() / mysql_select_db() detected by ASan
| Submitted: | 11 Jul 2018 19:03 | Modified: | 12 Jul 2018 8:02 |
|---|---|---|---|
| Reporter: | Yura Sorokin (OCA) | Email Updates: | |
| Status: | Verified | Impact on me: | |
| Category: | MySQL Server: Command-line Clients | Severity: | S2 (Serious) |
| Version: | 5.5.60 | OS: | Any |
| Assigned to: | CPU Architecture: | Any | |
| Tags: | Contribution | ||
[11 Jul 2018 19:04]
Yura Sorokin
Function 'dbConnect()' in 'client/mysqlcheck.c' has 'DBUG_ENTER("dbConnect")'
at the beginning but ends with plain 'return' which causes stack corruption
in Debug mode.
Suggested fix:
changing plain 'return's to 'DBUG_RETURN()'s.
[11 Jul 2018 19:05]
Yura Sorokin
A patch to make 5.5 code compilable with GCC 7.3/8.0 (*) I confirm the code being submitted is offered under the terms of the OCA, and that I am authorized to contribute it.
Contribution: mysql_5_5_gcc_7_3_asan_fix.diff (application/octet-stream, text), 1.33 KiB.
[11 Jul 2018 19:13]
Yura Sorokin
5.5 patch (*) I confirm the code being submitted is offered under the terms of the OCA, and that I am authorized to contribute it.
Contribution: bug91604_5_5.diff (application/octet-stream, text), 899 bytes.
[11 Jul 2018 19:54]
Yura Sorokin
5.6 patch (*) I confirm the code being submitted is offered under the terms of the OCA, and that I am authorized to contribute it.
Contribution: bug91604_5_6.diff (application/octet-stream, text), 434 bytes.
[11 Jul 2018 19:56]
Yura Sorokin
5.7 patch (*) I confirm the code being submitted is offered under the terms of the OCA, and that I am authorized to contribute it.
Contribution: bug91604_5_7.diff (application/octet-stream, text), 461 bytes.
[12 Jul 2018 8:02]
MySQL Verification Team
Hello Yura Sorokin, Thank you for the report and contribution. Thanks, Umesh
[17 Aug 2018 14:35]
Ståle Deraas
Hi Yura, Please see http://bugs.mysql.com/bug.php?id=89420 for reason for not accepting your contribution for compiling 5.5 with gcc 7.3/8.0 .
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.043 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: Address Sanitizer from GCC 7.3 and 8.0 detects the following problem in a number of MTR test cases. ==68360==ERROR: AddressSanitizer: stack-use-after-scope on address 0x7ffdc74d1ab0 at pc 0x564b7351539b bp 0x7ffdc74d1880 sp 0x7ffdc74d1870 READ of size 4 at 0x7ffdc74d1ab0 thread T0 #0 0x564b7351539a in _db_enter_ /mnt/hgfs/repos/percona-server/dbug/dbug.c:1111 #1 0x564b734e5d97 in mysql_select_db /mnt/hgfs/repos/percona-server/sql-common/client.c:3985 #2 0x564b734d7b38 in use_db /mnt/hgfs/repos/percona-server/client/mysqlcheck.c:695 #3 0x564b734d88d9 in process_all_tables_in_db /mnt/hgfs/repos/percona-server/client/mysqlcheck.c:546 #4 0x564b734d88d9 in process_one_db /mnt/hgfs/repos/percona-server/client/mysqlcheck.c:683 #5 0x564b734d9286 in process_databases /mnt/hgfs/repos/percona-server/client/mysqlcheck.c:454 #6 0x564b734d9286 in main /mnt/hgfs/repos/percona-server/client/mysqlcheck.c:992 #7 0x7f1949bd1b96 in __libc_start_main (/lib/x86_64-linux-gnu/libc.so.6+0x21b96) #8 0x564b734d6b19 in _start (/home/yura/addon/percona-build-5.5-asan/client/mysqlcheck+0x66b19) Address 0x7ffdc74d1ab0 is located in stack of thread T0 at offset 48 in frame #0 0x564b734d8e76 in main /mnt/hgfs/repos/percona-server/client/mysqlcheck.c:955 This frame has 1 object(s): [32, 64) '_db_stack_frame_' <== Memory access at offset 48 is inside this variable HINT: this may be a false positive if your program uses some custom stack unwind mechanism or swapcontext (longjmp and C++ exceptions *are* supported) SUMMARY: AddressSanitizer: stack-use-after-scope /mnt/hgfs/repos/percona-server/dbug/dbug.c:1111 in _db_enter_ Shadow bytes around the buggy address: 0x100038e92300: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100038e92310: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100038e92320: 00 00 f1 f1 f1 f1 00 00 00 00 f3 f3 f3 f3 00 00 0x100038e92330: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100038e92340: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 =>0x100038e92350: f1 f1 f1 f1 f8 f8[f8]f8 f3 f3 f3 f3 00 00 00 00 0x100038e92360: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100038e92370: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100038e92380: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100038e92390: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0x100038e923a0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 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 ==68360==ABORTING How to repeat: Compile MySQL 5.5 branch on Ubuntu Bionic (GCC 7.3) Run ./mysql-test/mtr --debug-server main.ipv6 Suggested fix: See the attached patches