#At file:///home/andrei/MySQL/BZR/2a-23May/FIXES/bug11763265-55956-mysqlbinlog_raw_mode/ based on revid:georgi.kodinov@stripped
3327 Andrei Elkin 2011-03-26
bug#11763265 Potential bug with new --raw mode with mysqlbinlog
There are two reported artifacts on possible operations with uninitialazed Log_event* pointer
inside dump_remote_log_entries().
In fact, under --raw mode only Load-data events generated by pre 5.0.3 servers is the valid issue.
That relates to the assignment Load_log_event *le= (Load_log_event*)ev
where rhs is not initialized when --raw.
Rotate event is indeed handled correctly.
Fixed with issuing an error if a pre-5.0.3 server sends LOAD_EVENT or CREATE_FILE_EVENT.
There won't be any crash as well as no support for the referred events in combination with --raw.
modified:
client/mysqlbinlog.cc
=== modified file 'client/mysqlbinlog.cc'
--- a/client/mysqlbinlog.cc 2011-01-18 12:09:03 +0000
+++ b/client/mysqlbinlog.cc 2011-03-25 22:06:40 +0000
@@ -1687,7 +1687,7 @@ static Exit_status dump_remote_log_entri
*/
if (type == ROTATE_EVENT)
{
- Rotate_log_event *rev= (Rotate_log_event *)ev;
+ Rotate_log_event *rev= (Rotate_log_event *)ev;
/*
If this is a fake Rotate event, and not about our log, we can stop
transfer. If this a real Rotate event (so it's not about our log,
@@ -1783,6 +1783,11 @@ static Exit_status dump_remote_log_entri
}
else
{
+ if (raw_mode)
+ {
+ error("Can't handle LOAD_DATA events generated by prior to 5.0.3 servers");
+ DBUG_RETURN(ERROR_STOP);
+ }
Load_log_event *le= (Load_log_event*)ev;
const char *old_fname= le->fname;
uint old_len= le->fname_len;
Attachment: [text/bzr-bundle] bzr/andrei.elkin@oracle.com-20110325220640-je90y1cwqf6isyff.bundle
| Thread |
|---|
| • bzr commit into mysql-trunk branch (andrei.elkin:3327) Bug#11763265 | Andrei Elkin | 25 Mar |