diff --git a/server/modules/routing/binlog/blr_slave.c b/server/modules/routing/binlog/blr_slave.c index f3ae76371..bad4a196b 100644 --- a/server/modules/routing/binlog/blr_slave.c +++ b/server/modules/routing/binlog/blr_slave.c @@ -1079,8 +1079,15 @@ uint32_t chksum; ptr = GWBUF_DATA(queue); len = extract_field(ptr, 24); binlognamelen = len - 11; - if (! slave->nocrc) - binlognamelen -= 4; + if (binlognamelen > BINLOG_FNAMELEN) + { + LOGIF(LE, (skygw_log_write( + LOGFILE_ERROR, + "blr_slave_binlog_dump truncating binlog filename " + "from %d to %d", + binlognamelen, BINLOG_FNAMELEN))); + binlognamelen = BINLOG_FNAMELEN; + } ptr += 4; // Skip length and sequence number if (*ptr++ != COM_BINLOG_DUMP) { @@ -1100,6 +1107,13 @@ uint32_t chksum; strncpy(slave->binlogfile, (char *)ptr, binlognamelen); slave->binlogfile[binlognamelen] = 0; + LOGIF(LD, (skygw_log_write( + LOGFILE_DEBUG, + "%s: COM_BINLOG_DUMP: binlog name '%s', length %d, " + "from position %d.", router->service->name, + slave->binlogfile, binlognamelen, + slave->binlog_pos))); + slave->seqno = 1;