mirror of
https://github.com/MariaDB/server.git
synced 2025-01-29 02:05:57 +01:00
MDEV-22741: *SAN: ERROR: AddressSanitizer: use-after-poison on address in instrings/strmake.c:36 from change_master (on optimized builds)
Problem: ======== CHANGE MASTER TO MASTER_USER='root', MASTER_SSL=0, MASTER_SSL_CA='', MASTER_SSL_CERT='', MASTER_SSL_KEY='', MASTER_SSL_CRL='', MASTER_SSL_CRLPATH=''; CHANGE MASTER TO MASTER_USER='root', MASTER_PASSWORD='', MASTER_SSL=0; use-after-poison is reported for lex_mi->ssl_crl File: sql_repl.cc if (lex_mi->ssl_crl) strmake_buf(mi->ssl_crl, lex_mi->ssl_crl); Analysis: ======== At the end of CHANGE MASTER statement execution, the LEX_MASTER_INFO parameters are reset so that the next query will have a clean state. But 'ssl_crl' and 'ssl_crl_path' members of LEX_MASTER_INFO object are not cleared during 'LEX_MASTER_INFO::reset'. Hence when a new CHANGE MASTER statement is executed, the stale value of lex_mi->ssl_crl is used, so ASAN reports use-after-poison. Fix: === Clear 'ssl_crl' and 'ssl_crl_path' as part of 'reset'.
This commit is contained in:
parent
6ede84f477
commit
eef4c5d378
3 changed files with 12 additions and 1 deletions
|
@ -22,4 +22,8 @@ n
|
|||
connection master;
|
||||
drop table t1;
|
||||
connection slave;
|
||||
connection master;
|
||||
CHANGE MASTER TO MASTER_USER='root', MASTER_SSL=0, MASTER_SSL_CA='', MASTER_SSL_CERT='',
|
||||
MASTER_SSL_KEY='', MASTER_SSL_CRL='', MASTER_SSL_CRLPATH='';
|
||||
CHANGE MASTER TO MASTER_USER='root', MASTER_PASSWORD='', MASTER_SSL=0;
|
||||
include/rpl_end.inc
|
||||
|
|
|
@ -101,4 +101,11 @@ connection master;
|
|||
drop table t1;
|
||||
}
|
||||
|
||||
--connection master
|
||||
# MDEV-22741: *SAN: ERROR: AddressSanitizer: use-after-poison on address in
|
||||
# instrings/strmake.c:36 from change_master (on optimized builds)
|
||||
CHANGE MASTER TO MASTER_USER='root', MASTER_SSL=0, MASTER_SSL_CA='', MASTER_SSL_CERT='',
|
||||
MASTER_SSL_KEY='', MASTER_SSL_CRL='', MASTER_SSL_CRLPATH='';
|
||||
CHANGE MASTER TO MASTER_USER='root', MASTER_PASSWORD='', MASTER_SSL=0;
|
||||
|
||||
--source include/rpl_end.inc
|
||||
|
|
|
@ -280,7 +280,7 @@ struct LEX_MASTER_INFO
|
|||
}
|
||||
|
||||
host= user= password= log_file_name= ssl_key= ssl_cert= ssl_ca=
|
||||
ssl_capath= ssl_cipher= relay_log_name= 0;
|
||||
ssl_capath= ssl_cipher= ssl_crl= ssl_crlpath= relay_log_name= NULL;
|
||||
pos= relay_log_pos= server_id= port= connect_retry= 0;
|
||||
heartbeat_period= 0;
|
||||
ssl= ssl_verify_server_cert= heartbeat_opt=
|
||||
|
|
Loading…
Add table
Reference in a new issue