diff --git a/sql/log_event.cc b/sql/log_event.cc index a226d5a2317..436c552aa17 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -4711,11 +4711,22 @@ int Load_log_event::copy_log_event(const char *buf, ulong event_len, fields = (char*)field_lens + num_fields; table_name = fields + field_block_len; db = table_name + table_name_len + 1; + DBUG_EXECUTE_IF ("simulate_invalid_address", + db_len = (4294967294U);); fname = db + db_len + 1; + if (fname > buf_end) + goto err; fname_len = (uint) strlen(fname); + if (fname + fname_len > buf_end) + goto err; // null termination is accomplished by the caller doing buf[event_len]=0 DBUG_RETURN(0); + +err: + // Invalid event. + table_name = 0; + DBUG_RETURN(1); }