diff options
author | Sergei Golubchik <sergii@pisem.net> | 2014-09-30 17:06:02 +0200 |
---|---|---|
committer | Sergei Golubchik <sergii@pisem.net> | 2014-09-30 17:06:02 +0200 |
commit | 4a784356daf12af50047467efb85d6308b0b3603 (patch) | |
tree | c906fba87bfa448099ebc6da174a3781ab22a875 /sql/log_event.cc | |
parent | 9fe7feb8bb2bcc10c7234d9a0c14d3c0b91291fb (diff) | |
download | mariadb-git-4a784356daf12af50047467efb85d6308b0b3603.tar.gz |
cleanup: an outbreak of templatonia cured.
Diffstat (limited to 'sql/log_event.cc')
-rw-r--r-- | sql/log_event.cc | 37 |
1 files changed, 9 insertions, 28 deletions
diff --git a/sql/log_event.cc b/sql/log_event.cc index 9bd9929bd57..7fa8640f107 100644 --- a/sql/log_event.cc +++ b/sql/log_event.cc @@ -88,23 +88,6 @@ TYPELIB binlog_checksum_typelib= */ #define FMT_G_BUFSIZE(PREC) (3 + (PREC) + 5 + 1) -/* - Explicit instantiation to unsigned int of template available_buffer - function. -*/ -template unsigned int available_buffer<unsigned int>(const char*, - const char*, - unsigned int); - -/* - Explicit instantiation to unsigned int of template valid_buffer_range - function. -*/ -template bool valid_buffer_range<unsigned int>(unsigned int, - const char*, - const char*, - unsigned int); - /* replication event checksum is introduced in the following "checksum-home" version. The checksum-aware servers extract FD's version to decide whether the FD event @@ -7539,9 +7522,9 @@ User_var_log_event(const char* buf, uint event_len, #endif { bool error= false; - const char* buf_start= buf; + const char* buf_start= buf, *buf_end= buf + event_len; + /* The Post-Header is empty. The Variable Data part begins immediately. */ - const char *start= buf; buf+= description_event->common_header_len + description_event->post_header_len[USER_VAR_EVENT-1]; name_len= uint4korr(buf); @@ -7552,8 +7535,7 @@ User_var_log_event(const char* buf, uint event_len, may have the bigger value possible, is_null= True and there is no payload for val, or even that name_len is 0. */ - if (!valid_buffer_range<uint>(name_len, buf_start, name, - event_len - UV_VAL_IS_NULL)) + if (name + name_len + UV_NAME_LEN_SIZE > buf_end) { error= true; goto err; @@ -7571,9 +7553,10 @@ User_var_log_event(const char* buf, uint event_len, } else { - if (!valid_buffer_range<uint>(UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE - + UV_CHARSET_NUMBER_SIZE + UV_VAL_LEN_SIZE, - buf_start, buf, event_len)) + val= (char *) (buf + UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE + + UV_CHARSET_NUMBER_SIZE + UV_VAL_LEN_SIZE); + + if (val > buf_end) { error= true; goto err; @@ -7583,10 +7566,8 @@ User_var_log_event(const char* buf, uint event_len, charset_number= uint4korr(buf + UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE); val_len= uint4korr(buf + UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE + UV_CHARSET_NUMBER_SIZE); - val= (char *) (buf + UV_VAL_IS_NULL + UV_VAL_TYPE_SIZE + - UV_CHARSET_NUMBER_SIZE + UV_VAL_LEN_SIZE); - if (!valid_buffer_range<uint>(val_len, buf_start, val, event_len)) + if (val + val_len > buf_end) { error= true; goto err; @@ -7603,7 +7584,7 @@ User_var_log_event(const char* buf, uint event_len, Old events will not have this extra byte, thence, we keep the flags set to UNDEF_F. */ - uint bytes_read= ((val + val_len) - start); + uint bytes_read= ((val + val_len) - buf_start); #ifndef DBUG_OFF bool old_pre_checksum_fd= description_event->is_version_before_checksum( &description_event->server_version_split); |