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 | |
parent | 9fe7feb8bb2bcc10c7234d9a0c14d3c0b91291fb (diff) | |
download | mariadb-git-4a784356daf12af50047467efb85d6308b0b3603.tar.gz |
cleanup: an outbreak of templatonia cured.
-rw-r--r-- | sql/log_event.cc | 37 | ||||
-rw-r--r-- | sql/sql_priv.h | 35 |
2 files changed, 9 insertions, 63 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); diff --git a/sql/sql_priv.h b/sql/sql_priv.h index 30fb1a4c29e..62f84090da8 100644 --- a/sql/sql_priv.h +++ b/sql/sql_priv.h @@ -159,41 +159,6 @@ #define OPTION_ALLOW_BATCH (1ULL << 36) // THD, intern (slave) #define OPTION_SKIP_REPLICATION (1ULL << 37) // THD, user -/* - Check how many bytes are available on buffer. - - @param buf_start Pointer to buffer start. - @param buf_current Pointer to the current position on buffer. - @param buf_len Buffer length. - - @return Number of bytes available on event buffer. -*/ -template <class T> T available_buffer(const char* buf_start, - const char* buf_current, - T buf_len) -{ - return buf_len - (buf_current - buf_start); -} - -/* - Check if jump value is within buffer limits. - - @param jump Number of positions we want to advance. - @param buf_start Pointer to buffer start - @param buf_current Pointer to the current position on buffer. - @param buf_len Buffer length. - - @return True If jump value is within buffer limits. - False Otherwise. -*/ -template <class T> bool valid_buffer_range(T jump, - const char* buf_start, - const char* buf_current, - T buf_len) -{ - return (jump <= available_buffer(buf_start, buf_current, buf_len)); -} - /* The rest of the file is included in the server only */ #ifndef MYSQL_CLIENT |