mirror of
https://github.com/MariaDB/server.git
synced 2025-01-16 03:52:35 +01:00
MDEV-33283: Binlog Checksum is Zeroed by Zlib if Part of Event Data is Empty
An existing binlog checksum can be overridden to 0 if writing a NULL payload when using Zlib for the computation. That is, calling into Zlib's crc32 with empty data initializes an incremental CRC computation to 0. This patch changes the Log_event_writer::write_data() to exit immediately if there is nothing to write, thereby bypassing the checksum computation. This follows the pattern of Log_event_writer::encrypt_and_write(), which also exits immediately if there is no data to write. Reviewed By: ============ Andrei Elkin <andrei.elkin@mariadb.com>
This commit is contained in:
parent
7573fe8b07
commit
207c85783b
1 changed files with 4 additions and 0 deletions
|
@ -916,6 +916,10 @@ int Log_event_writer::write_header(uchar *pos, size_t len)
|
|||
int Log_event_writer::write_data(const uchar *pos, size_t len)
|
||||
{
|
||||
DBUG_ENTER("Log_event_writer::write_data");
|
||||
|
||||
if (!len)
|
||||
DBUG_RETURN(0);
|
||||
|
||||
if (checksum_len)
|
||||
crc= my_checksum(crc, pos, len);
|
||||
|
||||
|
|
Loading…
Reference in a new issue