summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSergei Golubchik <sergii@pisem.net>2014-09-30 17:06:02 +0200
committerSergei Golubchik <sergii@pisem.net>2014-09-30 17:06:02 +0200
commit4a784356daf12af50047467efb85d6308b0b3603 (patch)
treec906fba87bfa448099ebc6da174a3781ab22a875
parent9fe7feb8bb2bcc10c7234d9a0c14d3c0b91291fb (diff)
downloadmariadb-git-4a784356daf12af50047467efb85d6308b0b3603.tar.gz
cleanup: an outbreak of templatonia cured.
-rw-r--r--sql/log_event.cc37
-rw-r--r--sql/sql_priv.h35
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