relay_log_basename and relay_log_index not properly validated leading to segfault
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Percona Server moved to https://jira.percona.com/projects/PS |
New
|
Undecided
|
Unassigned |
Bug Description
We run into an issue when Percona Server 5.7.16-10 segfault when relay_log_basename and relay_log_index are not set properly. Stacktrace follows
(gdb) bt
#0 0x0000003d65e0c97c in pthread_kill () from /lib64/
#1 0x000000000079e1a5 in handle_fatal_signal (sig=11) at /mnt/workspace/
#2 <signal handler called>
#3 0x0000003d65a81301 in __strlen_sse2 () from /lib64/libc.so.6
#4 0x0000000000e930bb in Relay_log_
at /mnt/workspace/
#5 0x0000000000e952ce in Relay_log_
) at /mnt/workspace/
#6 0x0000000000e9d2db in Slave_worker:
at /mnt/workspace/
#7 0x0000000000e9d7d1 in Slave_worker:
at /mnt/workspace/
#8 0x0000000000e9ea5d in slave_worker_
at /mnt/workspace/
#9 0x0000000000e8185b in handle_slave_worker (arg=0x7fe21f27
#10 0x0000000000ef78d4 in pfs_spawn_thread (arg=0x7fe21f00
#11 0x0000003d65e07aa1 in start_thread () from /lib64/
#12 0x0000003d65ae8aad in clone () from /lib64/libc.so.6
(gdb) p &relay_log_basename
$1 = (const char **) 0x1e1c4d0
(gdb) p 0x1e1c4d0
$2 = 31573200
(gdb) x/s 0x1e1c4d0
0x1e1c4d0 <relay_
This lead to segfault because of base_name_len= strlen(base_name); // strlen(NULL). When relay-log option is set everything works as expected. I think that there is a mistake in validation in mysql.cc (https:/
#ifndef EMBEDDED_LIBRARY
DBUG_
- if (opt_relay_logname)
+ if (!opt_relay_
{
Please verify that my sugestion is correct thanks!
Percona now uses JIRA for bug reports so this bug report is migrated to: https:/ /jira.percona. com/browse/ PS-3614