summaryrefslogtreecommitdiff
path: root/sql
diff options
context:
space:
mode:
authorOleksandr Byelkin <sanja@mariadb.com>2020-01-24 13:46:49 +0100
committerOleksandr Byelkin <sanja@mariadb.com>2020-01-24 13:46:49 +0100
commitf2ccfcaca191513d12f50672ae4545f9738670f0 (patch)
treeb72f61d8ae7904020d97eb76fb7b7680883d323e /sql
parentac3e3e12adad505b9f09bd068ddd6819ac084a05 (diff)
parent599a06098b967db3d636c1053bdbdd0011cba606 (diff)
downloadmariadb-git-f2ccfcaca191513d12f50672ae4545f9738670f0.tar.gz
Merge branch '10.1' into 10.2
Diffstat (limited to 'sql')
-rw-r--r--sql/log_event.cc9
-rw-r--r--sql/log_event.h10
-rw-r--r--sql/wsrep_mysqld.cc6
3 files changed, 22 insertions, 3 deletions
diff --git a/sql/log_event.cc b/sql/log_event.cc
index 1778cfbcda5..d5066fdabdf 100644
--- a/sql/log_event.cc
+++ b/sql/log_event.cc
@@ -6731,7 +6731,7 @@ int Load_log_event::copy_log_event(const char *buf, ulong event_len,
{
DBUG_ENTER("Load_log_event::copy_log_event");
uint data_len;
- if ((int) event_len < body_offset)
+ if ((int) event_len <= body_offset)
DBUG_RETURN(1);
char* buf_end = (char*)buf + event_len;
/* this is the beginning of the post-header */
@@ -10373,6 +10373,12 @@ Rows_log_event::Rows_log_event(const char *buf, uint event_len,
uint8 const post_header_len= description_event->post_header_len[event_type-1];
+ if (event_len < (uint)(common_header_len + post_header_len))
+ {
+ m_cols.bitmap= 0;
+ DBUG_VOID_RETURN;
+ }
+
DBUG_PRINT("enter",("event_len: %u common_header_len: %d "
"post_header_len: %d",
event_len, common_header_len,
@@ -11994,6 +12000,7 @@ Table_map_log_event::Table_map_log_event(const char *buf, uint event_len,
const char *post_start= buf + common_header_len;
post_start+= TM_MAPID_OFFSET;
+ VALIDATE_BYTES_READ(post_start, buf, event_len);
if (post_header_len == 6)
{
/* Master is of an intermediate source tree before 5.1.4. Id is 4 bytes */
diff --git a/sql/log_event.h b/sql/log_event.h
index 368d9616daf..863d81c047a 100644
--- a/sql/log_event.h
+++ b/sql/log_event.h
@@ -2193,7 +2193,15 @@ public:
****************************************************************************/
struct sql_ex_info
{
- sql_ex_info() {} /* Remove gcc warning */
+ sql_ex_info():
+ cached_new_format(-1),
+ field_term_len(0),
+ enclosed_len(0),
+ line_term_len(0),
+ line_start_len(0),
+ escaped_len(0),
+ empty_flags(0)
+ {} /* Remove gcc warning */
const char* field_term;
const char* enclosed;
const char* line_term;
diff --git a/sql/wsrep_mysqld.cc b/sql/wsrep_mysqld.cc
index cfcc04bff2c..ba6c2d24f77 100644
--- a/sql/wsrep_mysqld.cc
+++ b/sql/wsrep_mysqld.cc
@@ -628,7 +628,6 @@ int wsrep_init()
{
// enable normal operation in case no provider is specified
wsrep_ready_set(TRUE);
- wsrep_inited= 1;
global_system_variables.wsrep_on = 0;
wsrep_init_args args;
args.logger_cb = wsrep_log_cb;
@@ -639,10 +638,15 @@ int wsrep_init()
{
DBUG_PRINT("wsrep",("wsrep::init() failed: %d", rcode));
WSREP_ERROR("wsrep::init() failed: %d, must shutdown", rcode);
+ wsrep_ready_set(FALSE);
wsrep->free(wsrep);
free(wsrep);
wsrep = NULL;
}
+ else
+ {
+ wsrep_inited= 1;
+ }
return rcode;
}
else