mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
References: MDEV-4572 - merge with mariaDB 5.5.31
bzr merge lp:maria/5.5 -rtag:mariadb-5.5.31 Text conflict in cmake/cpack_rpm.cmake Text conflict in debian/dist/Debian/control Text conflict in debian/dist/Ubuntu/control Text conflict in sql/CMakeLists.txt Conflict adding file sql/db.opt. Moved existing file to sql/db.opt.moved. Conflict adding file sql/db.opt.moved. Moved existing file to sql/db.opt.moved.moved. Text conflict in sql/mysqld.cc Text conflict in support-files/mysql.spec.sh 8 conflicts encountered.
This commit is contained in:
@ -1070,6 +1070,7 @@ vio/viotest.cpp
|
||||
ylwrap
|
||||
zlib/*.ds?
|
||||
sql-bench/test-table-elimination
|
||||
sql/share/bulgarian
|
||||
sql/share/czech
|
||||
sql/share/danish
|
||||
sql/share/dutch
|
||||
@ -1133,6 +1134,7 @@ cmd-line-utils/libedit/emacs.h
|
||||
mysql-test/collections/default.release
|
||||
support-files/plugins.files
|
||||
client/mysql_plugin
|
||||
*.resource.txt
|
||||
plugin/handler_socket/perl-Net-HandlerSocket/HandlerSocket.c
|
||||
plugin/handler_socket/perl-Net-HandlerSocket/blib
|
||||
plugin/handler_socket/perl-Net-HandlerSocket/pm_to_blib
|
||||
@ -1149,3 +1151,4 @@ sql/db.opt
|
||||
./install_manifest_*.txt
|
||||
typescript
|
||||
mysql-test/collections/default.release.done
|
||||
sql/sql_yacc.hh
|
||||
|
@ -42,8 +42,7 @@ path=`dirname $0`
|
||||
if [ -z "$just_clean" ]
|
||||
then
|
||||
commands="$commands
|
||||
CC=\"$CC\" CFLAGS=\"$cflags\" CXX=\"$CXX\" CXXFLAGS=\"$cxxflags\" CXXLDFLAGS=\"$CXXLDFLAGS\" \
|
||||
$configure"
|
||||
CC=\"$CC\" CFLAGS=\"$cflags\" CXX=\"$CXX\" CXXFLAGS=\"$cxxflags\" CXXLDFLAGS=\"$CXXLDFLAGS\" $configure"
|
||||
fi
|
||||
|
||||
if [ -z "$just_configure" -a -z "$just_clean" ]
|
||||
|
@ -1,6 +1,7 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2005 MySQL AB
|
||||
# Copyright (c) 2005, 2006 MySQL AB
|
||||
# Use is subject to license terms
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,7 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2005 MySQL AB
|
||||
# Copyright (c) 2005, 2006 MySQL AB
|
||||
# Use is subject to license terms
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,7 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2005 MySQL AB
|
||||
# Copyright (c) 2005, 2006 MySQL AB
|
||||
# Use is subject to license terms
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (C) 2004, 2005 MySQL AB
|
||||
# Copyright (c) 2004, 2005, 2007 MySQL AB
|
||||
# Use is subject to license terms
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Copyright (C) 2004, 2005 MySQL AB
|
||||
# Copyright (c) 2004, 2005, 2007 MySQL AB
|
||||
# Use is subject to license terms
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2006 MySQL AB
|
||||
# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,7 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2000, 2002 MySQL AB
|
||||
# Copyright (c) 2000-2002, 2007 MySQL AB
|
||||
# Use is subject to license terms
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,7 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2004, 2005 MySQL AB
|
||||
# Copyright (c) 2004-2006 MySQL AB
|
||||
# Use is subject to license terms
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,6 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2005, 2007 MySQL AB
|
||||
# Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,7 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2001, 2005 MySQL AB
|
||||
# Copyright (c) 2001-2006 MySQL AB
|
||||
# Use is subject to license terms
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,7 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2004 MySQL AB
|
||||
# Copyright (c) 2004, 2006 MySQL AB
|
||||
# Use is subject to license terms
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,7 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2004, 2005 MySQL AB
|
||||
# Copyright (c) 2004-2006 MySQL AB
|
||||
# Use is subject to license terms
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,7 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2005 MySQL AB
|
||||
# Copyright (c) 2005, 2006 MySQL AB
|
||||
# Use is subject to license terms
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,7 @@
|
||||
#! /bin/sh
|
||||
|
||||
# Copyright (C) 2004, 2005 MySQL AB
|
||||
# Copyright (c) 2004-2006 MySQL AB
|
||||
# Use is subject to license terms
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -20,7 +20,7 @@ path=`dirname $0`
|
||||
extra_flags="$amd64_cflags -D__sun -m64 -mtune=athlon64 $debug_cflags"
|
||||
extra_configs="$amd64_configs $debug_configs $max_configs --with-libevent"
|
||||
|
||||
LDFLAGS="-lmtmalloc -R/usr/sfw/lib/64"
|
||||
LDFLAGS="-m64 -lmtmalloc -R/usr/sfw/lib/64"
|
||||
export LDFLAGS
|
||||
|
||||
. "$path/FINISH.sh"
|
||||
|
@ -339,8 +339,8 @@ INCLUDE(cmake/abi_check.cmake)
|
||||
INCLUDE(cmake/tags.cmake)
|
||||
|
||||
IF(WIN32)
|
||||
ADD_SUBDIRECTORY(win/packaging)
|
||||
ADD_SUBDIRECTORY(win/upgrade_wizard)
|
||||
ADD_SUBDIRECTORY(win/packaging)
|
||||
ENDIF()
|
||||
|
||||
CONFIGURE_FILE(config.h.cmake ${CMAKE_BINARY_DIR}/include/my_config.h)
|
||||
|
2
VERSION
2
VERSION
@ -1,4 +1,4 @@
|
||||
MYSQL_VERSION_MAJOR=5
|
||||
MYSQL_VERSION_MINOR=5
|
||||
MYSQL_VERSION_PATCH=30
|
||||
MYSQL_VERSION_PATCH=31
|
||||
MYSQL_VERSION_EXTRA=
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2001, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2001, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 2000-2002 MySQL AB
|
||||
/* Copyright (c) 2000-2002, 2006 MySQL AB
|
||||
Use is subject to license terms
|
||||
|
||||
This program is free software; you can redistribute it and/or
|
||||
modify it under the terms of the GNU Library General Public
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 2000 MySQL AB
|
||||
/* Copyright (c) 2000, 2007 MySQL AB
|
||||
Use is subject to license terms
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 2000 MySQL AB
|
||||
/* Copyright (c) 2000, 2001, 2003, 2006, 2008 MySQL AB
|
||||
Use is subject to license terms
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1635,7 +1635,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
{
|
||||
switch(optid) {
|
||||
case OPT_CHARSETS_DIR:
|
||||
strmake(mysql_charsets_dir, argument, sizeof(mysql_charsets_dir) - 1);
|
||||
strmake_buf(mysql_charsets_dir, argument);
|
||||
charsets_dir = mysql_charsets_dir;
|
||||
break;
|
||||
case OPT_DELIMITER:
|
||||
@ -1648,7 +1648,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
/* Check that delimiter does not contain a backslash */
|
||||
if (!strstr(argument, "\\"))
|
||||
{
|
||||
strmake(delimiter, argument, sizeof(delimiter) - 1);
|
||||
strmake_buf(delimiter, argument);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -1680,7 +1680,7 @@ get_one_option(int optid, const struct my_option *opt __attribute__((unused)),
|
||||
if (argument && strlen(argument))
|
||||
{
|
||||
default_pager_set= 1;
|
||||
strmake(pager, argument, sizeof(pager) - 1);
|
||||
strmake_buf(pager, argument);
|
||||
strmov(default_pager, pager);
|
||||
}
|
||||
else if (default_pager_set)
|
||||
@ -2961,7 +2961,7 @@ com_charset(String *buffer __attribute__((unused)), char *line)
|
||||
{
|
||||
char buff[256], *param;
|
||||
CHARSET_INFO * new_cs;
|
||||
strmake(buff, line, sizeof(buff) - 1);
|
||||
strmake_buf(buff, line);
|
||||
param= get_arg(buff, 0);
|
||||
if (!param || !*param)
|
||||
{
|
||||
@ -3198,7 +3198,7 @@ static void init_tee(const char *file_name)
|
||||
return;
|
||||
}
|
||||
OUTFILE = new_outfile;
|
||||
strmake(outfile, file_name, FN_REFLEN-1);
|
||||
strmake_buf(outfile, file_name);
|
||||
tee_fprintf(stdout, "Logging to file '%s'\n", file_name);
|
||||
opt_outfile= 1;
|
||||
return;
|
||||
@ -3827,7 +3827,7 @@ com_tee(String *buffer __attribute__((unused)),
|
||||
/* eliminate the spaces before the parameters */
|
||||
while (my_isspace(charset_info,*param))
|
||||
param++;
|
||||
end= strmake(file_name, param, sizeof(file_name) - 1);
|
||||
end= strmake_buf(file_name, param);
|
||||
/* remove end space from command line */
|
||||
while (end > file_name && (my_isspace(charset_info,end[-1]) ||
|
||||
my_iscntrl(charset_info,end[-1])))
|
||||
@ -3888,7 +3888,7 @@ com_pager(String *buffer __attribute__((unused)),
|
||||
}
|
||||
else
|
||||
{
|
||||
end= strmake(pager_name, param, sizeof(pager_name)-1);
|
||||
end= strmake_buf(pager_name, param);
|
||||
while (end > pager_name && (my_isspace(charset_info,end[-1]) ||
|
||||
my_iscntrl(charset_info,end[-1])))
|
||||
end--;
|
||||
@ -4101,7 +4101,7 @@ static int com_source(String *buffer __attribute__((unused)),
|
||||
INFO_ERROR, 0);
|
||||
while (my_isspace(charset_info,*param))
|
||||
param++;
|
||||
end=strmake(source_name,param,sizeof(source_name)-1);
|
||||
end=strmake_buf(source_name, param);
|
||||
while (end > source_name && (my_isspace(charset_info,end[-1]) ||
|
||||
my_iscntrl(charset_info,end[-1])))
|
||||
end--;
|
||||
@ -4154,7 +4154,7 @@ com_delimiter(String *buffer __attribute__((unused)), char *line)
|
||||
{
|
||||
char buff[256], *tmp;
|
||||
|
||||
strmake(buff, line, sizeof(buff) - 1);
|
||||
strmake_buf(buff, line);
|
||||
tmp= get_arg(buff, 0);
|
||||
|
||||
if (!tmp || !*tmp)
|
||||
@ -4171,7 +4171,7 @@ com_delimiter(String *buffer __attribute__((unused)), char *line)
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
strmake(delimiter, tmp, sizeof(delimiter) - 1);
|
||||
strmake_buf(delimiter, tmp);
|
||||
delimiter_length= (int)strlen(delimiter);
|
||||
delimiter_str= delimiter;
|
||||
return 0;
|
||||
@ -4185,7 +4185,7 @@ com_use(String *buffer __attribute__((unused)), char *line)
|
||||
int select_db;
|
||||
|
||||
bzero(buff, sizeof(buff));
|
||||
strmake(buff, line, sizeof(buff) - 1);
|
||||
strmake_buf(buff, line);
|
||||
tmp= get_arg(buff, 0);
|
||||
if (!tmp || !*tmp)
|
||||
{
|
||||
|
@ -818,6 +818,88 @@ write_event_header_and_base64(Log_event *ev, FILE *result_file,
|
||||
}
|
||||
|
||||
|
||||
static bool print_base64(PRINT_EVENT_INFO *print_event_info, Log_event *ev)
|
||||
{
|
||||
/*
|
||||
These events must be printed in base64 format, if printed.
|
||||
base64 format requires a FD event to be safe, so if no FD
|
||||
event has been printed, we give an error. Except if user
|
||||
passed --short-form, because --short-form disables printing
|
||||
row events.
|
||||
*/
|
||||
if (!print_event_info->printed_fd_event && !short_form &&
|
||||
opt_base64_output_mode != BASE64_OUTPUT_DECODE_ROWS)
|
||||
{
|
||||
const char* type_str= ev->get_type_str();
|
||||
if (opt_base64_output_mode == BASE64_OUTPUT_NEVER)
|
||||
error("--base64-output=never specified, but binlog contains a "
|
||||
"%s event which must be printed in base64.",
|
||||
type_str);
|
||||
else
|
||||
error("malformed binlog: it does not contain any "
|
||||
"Format_description_log_event. I now found a %s event, which "
|
||||
"is not safe to process without a "
|
||||
"Format_description_log_event.",
|
||||
type_str);
|
||||
return 1;
|
||||
}
|
||||
ev->print(result_file, print_event_info);
|
||||
return print_event_info->head_cache.error == -1;
|
||||
}
|
||||
|
||||
|
||||
static bool print_row_event(PRINT_EVENT_INFO *print_event_info, Log_event *ev,
|
||||
ulong table_id, bool is_stmt_end)
|
||||
{
|
||||
Table_map_log_event *ignored_map=
|
||||
print_event_info->m_table_map_ignored.get_table(table_id);
|
||||
bool skip_event= (ignored_map != NULL);
|
||||
|
||||
/*
|
||||
end of statement check:
|
||||
i) destroy/free ignored maps
|
||||
ii) if skip event, flush cache now
|
||||
*/
|
||||
if (is_stmt_end)
|
||||
{
|
||||
/*
|
||||
Now is safe to clear ignored map (clear_tables will also
|
||||
delete original table map events stored in the map).
|
||||
*/
|
||||
if (print_event_info->m_table_map_ignored.count() > 0)
|
||||
print_event_info->m_table_map_ignored.clear_tables();
|
||||
|
||||
/*
|
||||
If there is a kept Annotate event and all corresponding
|
||||
rbr-events were filtered away, the Annotate event was not
|
||||
freed and it is just the time to do it.
|
||||
*/
|
||||
free_annotate_event();
|
||||
|
||||
/*
|
||||
One needs to take into account an event that gets
|
||||
filtered but was last event in the statement. If this is
|
||||
the case, previous rows events that were written into
|
||||
IO_CACHEs still need to be copied from cache to
|
||||
result_file (as it would happen in ev->print(...) if
|
||||
event was not skipped).
|
||||
*/
|
||||
if (skip_event)
|
||||
{
|
||||
if ((copy_event_cache_to_file_and_reinit(&print_event_info->head_cache, result_file) ||
|
||||
copy_event_cache_to_file_and_reinit(&print_event_info->body_cache, result_file)))
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
|
||||
/* skip the event check */
|
||||
if (skip_event)
|
||||
return 0;
|
||||
|
||||
return print_base64(print_event_info, ev);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
Print the given event, and either delete it or delegate the deletion
|
||||
to someone else.
|
||||
@ -1130,86 +1212,29 @@ Exit_status process_event(PRINT_EVENT_INFO *print_event_info, Log_event *ev,
|
||||
error("Could not rewrite database name");
|
||||
goto err;
|
||||
}
|
||||
if (print_base64(print_event_info, ev))
|
||||
goto err;
|
||||
break;
|
||||
}
|
||||
case WRITE_ROWS_EVENT:
|
||||
case DELETE_ROWS_EVENT:
|
||||
case UPDATE_ROWS_EVENT:
|
||||
{
|
||||
Rows_log_event *e= (Rows_log_event*) ev;
|
||||
if (print_row_event(print_event_info, ev, e->get_table_id(),
|
||||
e->get_flags(Rows_log_event::STMT_END_F)))
|
||||
goto err;
|
||||
break;
|
||||
}
|
||||
case PRE_GA_WRITE_ROWS_EVENT:
|
||||
case PRE_GA_DELETE_ROWS_EVENT:
|
||||
case PRE_GA_UPDATE_ROWS_EVENT:
|
||||
{
|
||||
if (ev_type != TABLE_MAP_EVENT)
|
||||
{
|
||||
Rows_log_event *e= (Rows_log_event*) ev;
|
||||
Table_map_log_event *ignored_map=
|
||||
print_event_info->m_table_map_ignored.get_table(e->get_table_id());
|
||||
bool skip_event= (ignored_map != NULL);
|
||||
|
||||
/*
|
||||
end of statement check:
|
||||
i) destroy/free ignored maps
|
||||
ii) if skip event, flush cache now
|
||||
*/
|
||||
if (e->get_flags(Rows_log_event::STMT_END_F))
|
||||
{
|
||||
/*
|
||||
Now is safe to clear ignored map (clear_tables will also
|
||||
delete original table map events stored in the map).
|
||||
*/
|
||||
if (print_event_info->m_table_map_ignored.count() > 0)
|
||||
print_event_info->m_table_map_ignored.clear_tables();
|
||||
|
||||
/*
|
||||
If there is a kept Annotate event and all corresponding
|
||||
rbr-events were filtered away, the Annotate event was not
|
||||
freed and it is just the time to do it.
|
||||
*/
|
||||
free_annotate_event();
|
||||
|
||||
/*
|
||||
One needs to take into account an event that gets
|
||||
filtered but was last event in the statement. If this is
|
||||
the case, previous rows events that were written into
|
||||
IO_CACHEs still need to be copied from cache to
|
||||
result_file (as it would happen in ev->print(...) if
|
||||
event was not skipped).
|
||||
*/
|
||||
if (skip_event)
|
||||
{
|
||||
if ((copy_event_cache_to_file_and_reinit(&print_event_info->head_cache, result_file) ||
|
||||
copy_event_cache_to_file_and_reinit(&print_event_info->body_cache, result_file)))
|
||||
goto err;
|
||||
}
|
||||
}
|
||||
|
||||
/* skip the event check */
|
||||
if (skip_event)
|
||||
goto end;
|
||||
}
|
||||
/*
|
||||
These events must be printed in base64 format, if printed.
|
||||
base64 format requires a FD event to be safe, so if no FD
|
||||
event has been printed, we give an error. Except if user
|
||||
passed --short-form, because --short-form disables printing
|
||||
row events.
|
||||
*/
|
||||
if (!print_event_info->printed_fd_event && !short_form &&
|
||||
opt_base64_output_mode != BASE64_OUTPUT_DECODE_ROWS)
|
||||
{
|
||||
const char* type_str= ev->get_type_str();
|
||||
if (opt_base64_output_mode == BASE64_OUTPUT_NEVER)
|
||||
error("--base64-output=never specified, but binlog contains a "
|
||||
"%s event which must be printed in base64.",
|
||||
type_str);
|
||||
else
|
||||
error("malformed binlog: it does not contain any "
|
||||
"Format_description_log_event. I now found a %s event, which "
|
||||
"is not safe to process without a "
|
||||
"Format_description_log_event.",
|
||||
type_str);
|
||||
Old_rows_log_event *e= (Old_rows_log_event*) ev;
|
||||
if (print_row_event(print_event_info, ev, e->get_table_id(),
|
||||
e->get_flags(Old_rows_log_event::STMT_END_F)))
|
||||
goto err;
|
||||
}
|
||||
/* FALL THROUGH */
|
||||
break;
|
||||
}
|
||||
default:
|
||||
print_skip_replication_statement(print_event_info, ev);
|
||||
|
@ -18,7 +18,7 @@
|
||||
|
||||
/* By Jani Tolonen, 2001-04-20, MySQL Development Team */
|
||||
|
||||
#define CHECK_VERSION "2.7.0"
|
||||
#define CHECK_VERSION "2.7.1"
|
||||
|
||||
#include "client_priv.h"
|
||||
#include <m_ctype.h>
|
||||
@ -32,6 +32,10 @@
|
||||
#define EX_USAGE 1
|
||||
#define EX_MYSQLERR 2
|
||||
|
||||
/* ALTER instead of repair. */
|
||||
#define MAX_ALTER_STR_SIZE 128 * 1024
|
||||
#define KEY_PARTITIONING_CHANGED_STR "KEY () partitioning changed"
|
||||
|
||||
static MYSQL mysql_connection, *sock = 0;
|
||||
static my_bool opt_alldbs = 0, opt_check_only_changed = 0, opt_extended = 0,
|
||||
opt_compress = 0, opt_databases = 0, opt_fast = 0,
|
||||
@ -47,7 +51,7 @@ static char *opt_password = 0, *current_user = 0,
|
||||
*default_charset= 0, *current_host= 0;
|
||||
static char *opt_plugin_dir= 0, *opt_default_auth= 0;
|
||||
static int first_error = 0;
|
||||
DYNAMIC_ARRAY tables4repair, tables4rebuild;
|
||||
DYNAMIC_ARRAY tables4repair, tables4rebuild, alter_table_cmds;
|
||||
static char *shared_memory_base_name=0;
|
||||
static uint opt_protocol=0;
|
||||
|
||||
@ -620,6 +624,17 @@ static int process_all_tables_in_db(char *database)
|
||||
} /* process_all_tables_in_db */
|
||||
|
||||
|
||||
static int run_query(const char *query)
|
||||
{
|
||||
if (mysql_query(sock, query))
|
||||
{
|
||||
fprintf(stderr, "Failed to %s\n", query);
|
||||
fprintf(stderr, "Error: %s\n", mysql_error(sock));
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
static int fix_table_storage_name(const char *name)
|
||||
{
|
||||
@ -630,12 +645,7 @@ static int fix_table_storage_name(const char *name)
|
||||
if (strncmp(name, "#mysql50#", 9))
|
||||
DBUG_RETURN(1);
|
||||
sprintf(qbuf, "RENAME TABLE `%s` TO `%s`", name, name + 9);
|
||||
if (mysql_query(sock, qbuf))
|
||||
{
|
||||
fprintf(stderr, "Failed to %s\n", qbuf);
|
||||
fprintf(stderr, "Error: %s\n", mysql_error(sock));
|
||||
rc= 1;
|
||||
}
|
||||
rc= run_query(qbuf);
|
||||
if (verbose)
|
||||
printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
|
||||
DBUG_RETURN(rc);
|
||||
@ -650,12 +660,7 @@ static int fix_database_storage_name(const char *name)
|
||||
if (strncmp(name, "#mysql50#", 9))
|
||||
DBUG_RETURN(1);
|
||||
sprintf(qbuf, "ALTER DATABASE `%s` UPGRADE DATA DIRECTORY NAME", name);
|
||||
if (mysql_query(sock, qbuf))
|
||||
{
|
||||
fprintf(stderr, "Failed to %s\n", qbuf);
|
||||
fprintf(stderr, "Error: %s\n", mysql_error(sock));
|
||||
rc= 1;
|
||||
}
|
||||
rc= run_query(qbuf);
|
||||
if (verbose)
|
||||
printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
|
||||
DBUG_RETURN(rc);
|
||||
@ -726,15 +731,7 @@ static int use_db(char *database)
|
||||
static int disable_binlog()
|
||||
{
|
||||
const char *stmt= "SET SQL_LOG_BIN=0";
|
||||
DBUG_ENTER("disable_binlog");
|
||||
|
||||
if (mysql_query(sock, stmt))
|
||||
{
|
||||
fprintf(stderr, "Failed to %s\n", stmt);
|
||||
fprintf(stderr, "Error: %s\n", mysql_error(sock));
|
||||
DBUG_RETURN(1);
|
||||
}
|
||||
DBUG_RETURN(0);
|
||||
return run_query(stmt);
|
||||
}
|
||||
|
||||
static int handle_request_for_tables(char *tables, uint length)
|
||||
@ -821,6 +818,7 @@ static void print_result()
|
||||
MYSQL_RES *res;
|
||||
MYSQL_ROW row;
|
||||
char prev[(NAME_LEN+9)*2+2];
|
||||
char prev_alter[MAX_ALTER_STR_SIZE];
|
||||
uint i;
|
||||
my_bool found_error=0, table_rebuild=0;
|
||||
DBUG_ENTER("print_result");
|
||||
@ -828,6 +826,7 @@ static void print_result()
|
||||
res = mysql_use_result(sock);
|
||||
|
||||
prev[0] = '\0';
|
||||
prev_alter[0]= 0;
|
||||
for (i = 0; (row = mysql_fetch_row(res)); i++)
|
||||
{
|
||||
int changed = strcmp(prev, row[0]);
|
||||
@ -844,12 +843,18 @@ static void print_result()
|
||||
strcmp(row[3],"OK"))
|
||||
{
|
||||
if (table_rebuild)
|
||||
insert_dynamic(&tables4rebuild, (uchar*) prev);
|
||||
{
|
||||
if (prev_alter[0])
|
||||
insert_dynamic(&alter_table_cmds, (uchar*) prev_alter);
|
||||
else
|
||||
insert_dynamic(&tables4rebuild, (uchar*) prev);
|
||||
}
|
||||
else
|
||||
insert_dynamic(&tables4repair, (uchar*) prev);
|
||||
}
|
||||
found_error=0;
|
||||
table_rebuild=0;
|
||||
prev_alter[0]= 0;
|
||||
if (opt_silent)
|
||||
continue;
|
||||
}
|
||||
@ -866,11 +871,30 @@ static void print_result()
|
||||
printf("%-50s %s", row[0], "Needs upgrade");
|
||||
else
|
||||
printf("%s\n%-9s: %s", row[0], row[2], row[3]);
|
||||
if (strcmp(row[2],"note"))
|
||||
if (opt_auto_repair && strcmp(row[2],"note"))
|
||||
{
|
||||
found_error=1;
|
||||
if (opt_auto_repair && strstr(row[3], "ALTER TABLE") != NULL)
|
||||
const char *alter_txt= strstr(row[3], "ALTER TABLE");
|
||||
found_error=1;
|
||||
if (alter_txt)
|
||||
{
|
||||
table_rebuild=1;
|
||||
if (!strncmp(row[3], KEY_PARTITIONING_CHANGED_STR,
|
||||
strlen(KEY_PARTITIONING_CHANGED_STR)) &&
|
||||
strstr(alter_txt, "PARTITION BY"))
|
||||
{
|
||||
if (strlen(alter_txt) >= MAX_ALTER_STR_SIZE)
|
||||
{
|
||||
printf("Error: Alter command too long (>= %d),"
|
||||
" please do \"%s\" or dump/reload to fix it!\n",
|
||||
MAX_ALTER_STR_SIZE,
|
||||
alter_txt);
|
||||
table_rebuild= 0;
|
||||
prev_alter[0]= 0;
|
||||
}
|
||||
else
|
||||
strcpy(prev_alter, alter_txt);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
@ -882,7 +906,12 @@ static void print_result()
|
||||
if (found_error && opt_auto_repair && what_to_do != DO_REPAIR)
|
||||
{
|
||||
if (table_rebuild)
|
||||
insert_dynamic(&tables4rebuild, (uchar*) prev);
|
||||
{
|
||||
if (prev_alter[0])
|
||||
insert_dynamic(&alter_table_cmds, (uchar*) prev_alter);
|
||||
else
|
||||
insert_dynamic(&tables4rebuild, (uchar*) prev);
|
||||
}
|
||||
else
|
||||
insert_dynamic(&tables4repair, (uchar*) prev);
|
||||
}
|
||||
@ -995,7 +1024,8 @@ int main(int argc, char **argv)
|
||||
|
||||
if (opt_auto_repair &&
|
||||
(my_init_dynamic_array(&tables4repair, sizeof(char)*(NAME_LEN*2+2),16,64) ||
|
||||
my_init_dynamic_array(&tables4rebuild, sizeof(char)*(NAME_LEN*2+2),16,64)))
|
||||
my_init_dynamic_array(&tables4rebuild, sizeof(char)*(NAME_LEN*2+2),16,64) ||
|
||||
my_init_dynamic_array(&alter_table_cmds, MAX_ALTER_STR_SIZE, 0, 1)))
|
||||
goto end;
|
||||
|
||||
if (opt_alldbs)
|
||||
@ -1020,6 +1050,8 @@ int main(int argc, char **argv)
|
||||
}
|
||||
for (i = 0; i < tables4rebuild.elements ; i++)
|
||||
rebuild_table((char*) dynamic_array_ptr(&tables4rebuild, i));
|
||||
for (i = 0; i < alter_table_cmds.elements ; i++)
|
||||
run_query((char*) dynamic_array_ptr(&alter_table_cmds, i));
|
||||
}
|
||||
ret= test(first_error);
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates.
|
||||
Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
||||
Copyright (c) 2010, 2013, Monty Program Ab.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
@ -1914,9 +1914,7 @@ static void print_xml_row(FILE *xml_file, const char *row_name,
|
||||
const char *str_create)
|
||||
{
|
||||
uint i;
|
||||
#ifndef DBUG_OFF
|
||||
my_bool body_found= 0;
|
||||
#endif
|
||||
my_bool body_found __attribute__((unused)) = 0;
|
||||
char *create_stmt_ptr= NULL;
|
||||
ulong create_stmt_len= 0;
|
||||
MYSQL_FIELD *field;
|
||||
|
@ -6335,8 +6335,7 @@ void do_delimiter(struct st_command* command)
|
||||
if (!(*p))
|
||||
die("Can't set empty delimiter");
|
||||
|
||||
strmake(delimiter, p, sizeof(delimiter) - 1);
|
||||
delimiter_length= strlen(delimiter);
|
||||
delimiter_length= strmake_buf(delimiter, p) - delimiter;
|
||||
|
||||
DBUG_PRINT("exit", ("delimiter: %s", delimiter));
|
||||
command->last_argument= p + delimiter_length;
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2000, 2011, Oracle and/or its affiliates.
|
||||
Copyright (c) 2000, 2013, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -691,7 +691,7 @@ String *copy_if_not_alloced(String *to,String *from,uint32 from_length)
|
||||
{
|
||||
if (from->Alloced_length >= from_length)
|
||||
return from;
|
||||
if (from->alloced || !to || from == to)
|
||||
if ((from->alloced && (from->Alloced_length != 0)) || !to || from == to)
|
||||
{
|
||||
(void) from->realloc(from_length);
|
||||
return from;
|
||||
|
@ -1,6 +1,6 @@
|
||||
#!/usr/bin/perl
|
||||
|
||||
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -93,7 +93,7 @@ SET(CPACK_RPM_devel_USER_FILELIST ${ignored})
|
||||
SET(CPACK_RPM_test_USER_FILELIST ${ignored})
|
||||
|
||||
SET(CPACK_RPM_client_PACKAGE_OBSOLETES "mysql-client MySQL-client MySQL-OurDelta-client")
|
||||
SET(CPACK_RPM_client_PACKAGE_PROVIDES "MariaDB-client MySQL-client mysql-client")
|
||||
SET(CPACK_RPM_client_PACKAGE_PROVIDES "MySQL-client mysql-client")
|
||||
|
||||
# this is a workaround for CPackRPM.cmake (as of 2.8.8) bug.
|
||||
# If a package group does not specify OBSOLETES/REQUIRES the values of the
|
||||
@ -102,10 +102,10 @@ SET(CPACK_RPM_common_PACKAGE_OBSOLETES "MySQL-common")
|
||||
SET(CPACK_RPM_common_PACKAGE_PROVIDES "MariaDB-common")
|
||||
|
||||
SET(CPACK_RPM_devel_PACKAGE_OBSOLETES "mysql-devel MySQL-devel MySQL-OurDelta-devel")
|
||||
SET(CPACK_RPM_devel_PACKAGE_PROVIDES "MariaDB-devel MySQL-devel mysql-devel")
|
||||
SET(CPACK_RPM_devel_PACKAGE_PROVIDES "MySQL-devel mysql-devel")
|
||||
|
||||
SET(CPACK_RPM_server_PACKAGE_OBSOLETES "MariaDB mysql mysql-server MySQL-server MySQL-OurDelta-server")
|
||||
SET(CPACK_RPM_server_PACKAGE_PROVIDES "MariaDB MariaDB-server MySQL-server config(MariaDB-server) msqlormysql mysql mysql(x86-32) mysql(x86-64) mysql-server")
|
||||
SET(CPACK_RPM_server_PACKAGE_OBSOLETES "MariaDB MySQL mysql-server MySQL-server MySQL-OurDelta-server")
|
||||
SET(CPACK_RPM_server_PACKAGE_PROVIDES "MariaDB MySQL MySQL-server msqlormysql mysql-server")
|
||||
SET(CPACK_RPM_server_PACKAGE_REQUIRES "${CPACK_RPM_PACKAGE_REQUIRES} galera")
|
||||
SET(CPACK_RPM_server_PRE_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-prein.sh)
|
||||
SET(CPACK_RPM_server_PRE_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-preun.sh)
|
||||
@ -113,12 +113,30 @@ SET(CPACK_RPM_server_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/
|
||||
SET(CPACK_RPM_server_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/server-postun.sh)
|
||||
|
||||
SET(CPACK_RPM_shared_PACKAGE_OBSOLETES "mysql-shared MySQL-shared-standard MySQL-shared-pro MySQL-shared-pro-cert MySQL-shared-pro-gpl MySQL-shared-pro-gpl-cert MySQL-shared MySQL-OurDelta-shared mysql-libs")
|
||||
SET(CPACK_RPM_shared_PACKAGE_PROVIDES "MariaDB-shared MySQL-shared mysql-shared libmysqlclient.so.18 libmysqlclient.so.18(libmysqlclient_16) libmysqlclient.so.18(libmysqlclient_18) libmysqlclient_r.so.18 libmysqlclient_r.so.18(libmysqlclient_18) mysql-libs")
|
||||
SET(CPACK_RPM_shared_PACKAGE_PROVIDES "MySQL-shared mysql-shared")
|
||||
|
||||
SET(CPACK_RPM_shared_POST_INSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
|
||||
SET(CPACK_RPM_shared_POST_UNINSTALL_SCRIPT_FILE ${CMAKE_SOURCE_DIR}/support-files/rpm/shared-post.sh)
|
||||
|
||||
SET(CPACK_RPM_test_PACKAGE_OBSOLETES "mysql-test MySQL-test MySQL-OurDelta-test")
|
||||
SET(CPACK_RPM_test_PACKAGE_PROVIDES "MariaDB-test MySQL-test mysql-test")
|
||||
SET(CPACK_RPM_test_PACKAGE_PROVIDES "MySQL-test mysql-test")
|
||||
|
||||
# Argh! Different distributions call packages differently, to be a drop-in replacement
|
||||
# we have to fake distribution-speficic dependencies
|
||||
MACRO(ALTERNATIVE_NAME real alt)
|
||||
SET(p "CPACK_RPM_${real}_PACKAGE_PROVIDES")
|
||||
SET(${p} "${${p}} ${alt} ${alt}(x86-32) ${alt}(x86-64) config(${alt})")
|
||||
ENDMACRO(ALTERNATIVE_NAME)
|
||||
|
||||
IF(RPM MATCHES "(rhel|centos)5")
|
||||
ALTERNATIVE_NAME("shared" "mysql")
|
||||
ELSEIF(RPM MATCHES "(rhel|centos)6")
|
||||
ALTERNATIVE_NAME("client" "mysql")
|
||||
ALTERNATIVE_NAME("shared" "mysql-libs")
|
||||
ELSEIF(RPM MATCHES "fedora")
|
||||
ALTERNATIVE_NAME("client" "mysql")
|
||||
ALTERNATIVE_NAME("shared" "mysql-libs")
|
||||
ENDIF()
|
||||
|
||||
# workaround for lots of perl dependencies added by rpmbuild
|
||||
SET(CPACK_RPM_test_PACKAGE_PROVIDES "${CPACK_RPM_test_PACKAGE_PROVIDES} perl(lib::mtr_gcov.pl) perl(lib::mtr_gprof.pl) perl(lib::mtr_io.pl) perl(lib::mtr_misc.pl) perl(lib::mtr_process.pl) perl(lib::v1/mtr_cases.pl) perl(lib::v1/mtr_gcov.pl) perl(lib::v1/mtr_gprof.pl) perl(lib::v1/mtr_im.pl) perl(lib::v1/mtr_io.pl) perl(lib::v1/mtr_match.pl) perl(lib::v1/mtr_misc.pl) perl(lib::v1/mtr_process.pl) perl(lib::v1/mtr_report.pl) perl(lib::v1/mtr_stress.pl) perl(lib::v1/mtr_timer.pl) perl(lib::v1/mtr_unique.pl) perl(mtr_cases) perl(mtr_io.pl) perl(mtr_match) perl(mtr_misc.pl) perl(mtr_report) perl(mtr_results) perl(mtr_unique)")
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -47,9 +47,3 @@ IF(HAVE_DECL_SHM_HUGETLB)
|
||||
SET(HAVE_LARGE_PAGE_OPTION 1)
|
||||
ENDIF()
|
||||
|
||||
IF(CMAKE_SIZEOF_VOID_P EQUAL 4 AND CMAKE_SYSTEM_PROCESSOR MATCHES "86")
|
||||
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -march=i686")
|
||||
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -march=i686")
|
||||
SET(CMAKE_REQUIRED_FLAGS "${CMAKE_REQUIRED_FLAGS} -march=i686")
|
||||
ENDIF()
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2010, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2009, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -57,13 +57,17 @@ MACRO (MYSQL_CHECK_ZLIB_WITH_COMPRESS)
|
||||
INCLUDE(CheckFunctionExists)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES z)
|
||||
CHECK_FUNCTION_EXISTS(crc32 HAVE_CRC32)
|
||||
CHECK_FUNCTION_EXISTS(compressBound HAVE_COMPRESSBOUND)
|
||||
CHECK_FUNCTION_EXISTS(deflateBound HAVE_DEFLATEBOUND)
|
||||
SET(CMAKE_REQUIRED_LIBRARIES)
|
||||
IF(HAVE_CRC32)
|
||||
IF(HAVE_CRC32 AND HAVE_COMPRESSBOUND AND HAVE_DEFLATEBOUND)
|
||||
SET(ZLIB_LIBRARY z CACHE INTERNAL "System zlib library")
|
||||
SET(WITH_ZLIB "system" CACHE STRING "Which zlib to use (possible values are 'bundled' or 'system')")
|
||||
SET(WITH_ZLIB "system" CACHE STRING
|
||||
"Which zlib to use (possible values are 'bundled' or 'system')")
|
||||
SET(ZLIB_SOURCES "")
|
||||
ELSE()
|
||||
SET(ZLIB_FOUND FALSE CACHE INTERNAL "Zlib found but not usable")
|
||||
MESSAGE(STATUS "system zlib found but not usable")
|
||||
ENDIF()
|
||||
ENDIF()
|
||||
IF(NOT ZLIB_FOUND)
|
||||
|
@ -1,5 +1,5 @@
|
||||
|
||||
# Copyright (c) 2009, 2011, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2009, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
@ -959,12 +959,15 @@ CHECK_CXX_SOURCE_COMPILES("
|
||||
# they are silently ignored. For those OS's we will not attempt
|
||||
# to use SO_SNDTIMEO and SO_RCVTIMEO even if it is said to work.
|
||||
# See Bug#29093 for the problem with SO_SND/RCVTIMEO on HP/UX.
|
||||
# Solaris11 has a similar problem
|
||||
# To use alarm is simple, simply avoid setting anything.
|
||||
|
||||
IF(WIN32)
|
||||
SET(HAVE_SOCKET_TIMEOUT 1)
|
||||
ELSEIF(CMAKE_SYSTEM MATCHES "HP-UX")
|
||||
SET(HAVE_SOCKET_TIMEOUT 0)
|
||||
ELSEIF(CMAKE_SYSTEM_NAME MATCHES "SunOS")
|
||||
SET(HAVE_SOCKET_TIMEOUT 0)
|
||||
ELSEIF(CMAKE_CROSSCOMPILING)
|
||||
SET(HAVE_SOCKET_TIMEOUT 0)
|
||||
ELSE()
|
||||
|
4
debian/autobake-deb.sh
vendored
4
debian/autobake-deb.sh
vendored
@ -21,8 +21,8 @@ source ./VERSION
|
||||
UPSTREAM="${MYSQL_VERSION_MAJOR}.${MYSQL_VERSION_MINOR}.${MYSQL_VERSION_PATCH}${MYSQL_VERSION_EXTRA}"
|
||||
RELEASE_EXTRA=""
|
||||
|
||||
RELEASE_NAME=mariadb
|
||||
PATCHLEVEL=""
|
||||
RELEASE_NAME=""
|
||||
PATCHLEVEL="+maria"
|
||||
LOGSTRING="MariaDB build"
|
||||
|
||||
# Look up distro-version specific stuff.
|
||||
|
21
debian/dist/Debian/control
vendored
21
debian/dist/Debian/control
vendored
@ -39,7 +39,7 @@ Description: MariaDB database server with Galera cluster binaries
|
||||
Package: mariadb-galera-server
|
||||
Section: database
|
||||
Architecture: all
|
||||
Depends: mariadb-galera-server-5.5, ${misc:Depends}
|
||||
Depends: mariadb-galera-server-5.5 (= ${source:Version}), ${misc:Depends}
|
||||
Description: MariaDB database server with Galera cluster
|
||||
(metapackage depending on the latest version)
|
||||
This is an empty package that depends on the current "best" version of
|
||||
@ -52,3 +52,22 @@ Description: MariaDB database server with Galera cluster
|
||||
server. SQL (Structured Query Language) is the most popular database query
|
||||
language in the world. The main goals of MariaDB are speed, robustness and
|
||||
ease of use.
|
||||
|
||||
Package: mariadb-client
|
||||
Section: database
|
||||
Architecture: all
|
||||
Depends: mariadb-client-5.5 (= ${source:Version}), ${misc:Depends}
|
||||
Description: MariaDB database client (metapackage depending on the latest version)
|
||||
This is an empty package that depends on the current "best" version of
|
||||
mariadb-client (currently mariadb-client-5.5), as determined by the MariaDB
|
||||
maintainers. Install this package if in doubt about which MariaDB version
|
||||
you want, as this is the one we consider to be in the best shape.
|
||||
|
||||
Package: mariadb-test
|
||||
Section: database
|
||||
Architecture: all
|
||||
Depends: mariadb-test-5.5 (= ${source:Version})
|
||||
Description: MariaDB database regression test suite (metapackage depending on the latest version)
|
||||
This is an empty package that depends on the current "best" version of
|
||||
mariadb-test (currently mariadb-test-5.5), as determined by the MariaDB
|
||||
maintainers.
|
||||
|
20
debian/dist/Ubuntu/control
vendored
20
debian/dist/Ubuntu/control
vendored
@ -39,7 +39,7 @@ Description: MariaDB database server with Galera cluster binaries
|
||||
Package: mariadb-galera-server
|
||||
Section: database
|
||||
Architecture: all
|
||||
Depends: mariadb-galera-server-5.5, ${misc:Depends}
|
||||
Depends: mariadb-galera-server-5.5 (= ${source:Version}), ${misc:Depends}
|
||||
Description: MariaDB database with Galera cluster server (metapackage depending on the latest version)
|
||||
This is an empty package that depends on the current "best" version of
|
||||
mariadb-server (currently mariadb-server-5.5), as determined by the MariaDB
|
||||
@ -52,3 +52,21 @@ Description: MariaDB database with Galera cluster server (metapackage depending
|
||||
language in the world. The main goals of MariaDB are speed, robustness and
|
||||
ease of use.
|
||||
|
||||
Package: mariadb-client
|
||||
Section: database
|
||||
Architecture: all
|
||||
Depends: mariadb-client-5.5 (= ${source:Version}), ${misc:Depends}
|
||||
Description: MariaDB database client (metapackage depending on the latest version)
|
||||
This is an empty package that depends on the current "best" version of
|
||||
mariadb-client (currently mariadb-client-5.5), as determined by the MariaDB
|
||||
maintainers. Install this package if in doubt about which MariaDB version
|
||||
you want, as this is the one we consider to be in the best shape.
|
||||
|
||||
Package: mariadb-test
|
||||
Section: database
|
||||
Architecture: all
|
||||
Depends: mariadb-test-5.5 (= ${source:Version})
|
||||
Description: MariaDB database regression test suite (metapackage depending on the latest version)
|
||||
This is an empty package that depends on the current "best" version of
|
||||
mariadb-test (currently mariadb-test-5.5), as determined by the MariaDB
|
||||
maintainers.
|
||||
|
@ -1,4 +1,5 @@
|
||||
/* Copyright (C) 2000 MySQL AB
|
||||
/* Copyright (c) 2000, 2002-2004, 2007, 2008 MySQL AB
|
||||
Use is subject to license terms
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,4 +1,4 @@
|
||||
# Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
# Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2006 MySQL AB
|
||||
Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2006 MySQL AB
|
||||
Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2006 MySQL AB
|
||||
Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2006 MySQL AB
|
||||
Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005-2007 MySQL AB, 2008 Sun Microsystems, Inc.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2006, 2007 MySQL AB, 2008 Sun Microsystems, Inc.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005-2007 MySQL AB, 2010 Sun Microsystems, Inc.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -53,7 +52,8 @@ enum YasslError {
|
||||
badVersion_error = 117,
|
||||
compress_error = 118,
|
||||
decompress_error = 119,
|
||||
pms_version_error = 120
|
||||
pms_version_error = 120,
|
||||
sanityCipher_error = 121
|
||||
|
||||
// !!!! add error message to .cpp !!!!
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005-2007 MySQL AB, 2008 Sun Microsystems, Inc.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005-2007 MySQL AB, 2008 Sun Microsystems, Inc.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -220,7 +219,11 @@ const int DEFAULT_TIMEOUT = 500; // Default Session timeout in seconds
|
||||
const int MAX_RECORD_SIZE = 16384; // 2^14, max size by standard
|
||||
const int COMPRESS_EXTRA = 1024; // extra compression possible addition
|
||||
const int SESSION_FLUSH_COUNT = 256; // when to flush session cache
|
||||
|
||||
const int MAX_PAD_SIZE = 256; // max TLS padding size
|
||||
const int COMPRESS_CONSTANT = 13; // compression calculation constant
|
||||
const int COMPRESS_UPPER = 55; // compression calculation numerator
|
||||
const int COMPRESS_LOWER = 64; // compression calculation denominator
|
||||
const int COMPRESS_DUMMY_SIZE = 64; // compression dummy round size
|
||||
|
||||
typedef uint8 Cipher; // first byte is always 0x00 for SSLv3 & TLS
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005-2007 MySQL AB, 2008, 2009 Sun Microsystems, Inc.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2010, Oracle and/or its affiliates
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005-2008 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -221,12 +220,45 @@ void buildSHA(SSL& ssl, Finished& fin, const opaque* sender)
|
||||
}
|
||||
|
||||
|
||||
// sanity checks on encrypted message size
|
||||
static int sanity_check_message(SSL& ssl, uint msgSz)
|
||||
{
|
||||
uint minSz = 0;
|
||||
|
||||
if (ssl.getSecurity().get_parms().cipher_type_ == block) {
|
||||
uint blockSz = ssl.getCrypto().get_cipher().get_blockSize();
|
||||
if (msgSz % blockSz)
|
||||
return -1;
|
||||
|
||||
minSz = ssl.getSecurity().get_parms().hash_size_ + 1; // pad byte too
|
||||
if (blockSz > minSz)
|
||||
minSz = blockSz;
|
||||
|
||||
if (ssl.isTLSv1_1())
|
||||
minSz += blockSz; // explicit IV
|
||||
}
|
||||
else { // stream
|
||||
minSz = ssl.getSecurity().get_parms().hash_size_;
|
||||
}
|
||||
|
||||
if (msgSz < minSz)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// decrypt input message in place, store size in case needed later
|
||||
void decrypt_message(SSL& ssl, input_buffer& input, uint sz)
|
||||
{
|
||||
input_buffer plain(sz);
|
||||
opaque* cipher = input.get_buffer() + input.get_current();
|
||||
|
||||
if (sanity_check_message(ssl, sz) != 0) {
|
||||
ssl.SetError(sanityCipher_error);
|
||||
return;
|
||||
}
|
||||
|
||||
ssl.useCrypto().use_cipher().decrypt(plain.get_buffer(), cipher, sz);
|
||||
memcpy(cipher, plain.get_buffer(), sz);
|
||||
ssl.useSecurity().use_parms().encrypt_size_ = sz;
|
||||
@ -774,6 +806,8 @@ int DoProcessReply(SSL& ssl)
|
||||
return 0;
|
||||
}
|
||||
decrypt_message(ssl, buffer, hdr.length_);
|
||||
if (ssl.GetError())
|
||||
return 0;
|
||||
}
|
||||
|
||||
mySTL::auto_ptr<Message> msg(mf.CreateObject(hdr.type_));
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,4 +1,4 @@
|
||||
REM Copyright (C) 2006, 2007 MySQL AB
|
||||
REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
REM
|
||||
REM This program is free software; you can redistribute it and/or modify
|
||||
REM it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005-2007 MySQL AB, 2008-2010 Sun Microsystems, Inc.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,6 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000-2008 MySQL AB
|
||||
Use is subject to license terms
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2011, Oracle and/or its affiliates
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@ -144,6 +144,10 @@ void SetErrorString(YasslError error, char* buffer)
|
||||
strncpy(buffer, "bad PreMasterSecret version error", max);
|
||||
break;
|
||||
|
||||
case sanityCipher_error :
|
||||
strncpy(buffer, "sanity check on cipher text size error", max);
|
||||
break;
|
||||
|
||||
// openssl errors
|
||||
case SSL_ERROR_WANT_READ :
|
||||
strncpy(buffer, "the read operation would block", max);
|
||||
|
@ -972,30 +972,193 @@ output_buffer& operator<<(output_buffer& output, const Data& data)
|
||||
}
|
||||
|
||||
|
||||
// check all bytes for equality
|
||||
static int constant_compare(const byte* a, const byte* b, int len)
|
||||
{
|
||||
int good = 0;
|
||||
int bad = 0;
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
if (a[i] == b[i])
|
||||
good++;
|
||||
else
|
||||
bad++;
|
||||
}
|
||||
|
||||
if (good == len)
|
||||
return 0;
|
||||
else
|
||||
return 0 - bad; // failure
|
||||
}
|
||||
|
||||
|
||||
// check bytes for pad value
|
||||
static int pad_check(const byte* input, byte pad, int len)
|
||||
{
|
||||
int good = 0;
|
||||
int bad = 0;
|
||||
|
||||
for (int i = 0; i < len; i++) {
|
||||
if (input[i] == pad)
|
||||
good++;
|
||||
else
|
||||
bad++;
|
||||
}
|
||||
|
||||
if (good == len)
|
||||
return 0;
|
||||
else
|
||||
return 0 - bad; // failure
|
||||
}
|
||||
|
||||
|
||||
// get number of compression rounds
|
||||
static inline int get_rounds(int pLen, int padLen, int t)
|
||||
{
|
||||
int roundL1 = 1; // round ups
|
||||
int roundL2 = 1;
|
||||
|
||||
int L1 = COMPRESS_CONSTANT + pLen - t;
|
||||
int L2 = COMPRESS_CONSTANT + pLen - padLen - 1 - t;
|
||||
|
||||
L1 -= COMPRESS_UPPER;
|
||||
L2 -= COMPRESS_UPPER;
|
||||
|
||||
if ( (L1 % COMPRESS_LOWER) == 0)
|
||||
roundL1 = 0;
|
||||
if ( (L2 % COMPRESS_LOWER) == 0)
|
||||
roundL2 = 0;
|
||||
|
||||
L1 /= COMPRESS_LOWER;
|
||||
L2 /= COMPRESS_LOWER;
|
||||
|
||||
L1 += roundL1;
|
||||
L2 += roundL2;
|
||||
|
||||
return L1 - L2;
|
||||
}
|
||||
|
||||
|
||||
// do compression rounds on dummy data
|
||||
static inline void compress_rounds(SSL& ssl, int rounds, const byte* dummy)
|
||||
{
|
||||
if (rounds) {
|
||||
Digest* digest = NULL;
|
||||
|
||||
MACAlgorithm ma = ssl.getSecurity().get_parms().mac_algorithm_;
|
||||
if (ma == sha)
|
||||
digest = NEW_YS SHA;
|
||||
else if (ma == md5)
|
||||
digest = NEW_YS MD5;
|
||||
else if (ma == rmd)
|
||||
digest = NEW_YS RMD;
|
||||
else
|
||||
return;
|
||||
|
||||
for (int i = 0; i < rounds; i++)
|
||||
digest->update(dummy, COMPRESS_LOWER);
|
||||
|
||||
ysDelete(digest);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// timing resistant pad verification
|
||||
static int timing_verify(SSL& ssl, const byte* input, int padLen, int t,
|
||||
int pLen)
|
||||
{
|
||||
byte verify[SHA_LEN];
|
||||
byte dummy[MAX_PAD_SIZE];
|
||||
|
||||
memset(dummy, 1, sizeof(dummy));
|
||||
|
||||
if ( (t + padLen + 1) > pLen) {
|
||||
pad_check(dummy, (byte)padLen, MAX_PAD_SIZE);
|
||||
if (ssl.isTLS())
|
||||
TLS_hmac(ssl, verify, input, pLen - t, application_data, 1);
|
||||
else
|
||||
hmac(ssl, verify, input, pLen - t, application_data, 1);
|
||||
constant_compare(verify, input + pLen - t, t);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (pad_check(input + pLen - (padLen + 1), (byte)padLen, padLen + 1) != 0) {
|
||||
pad_check(dummy, (byte)padLen, MAX_PAD_SIZE - padLen - 1);
|
||||
if (ssl.isTLS())
|
||||
TLS_hmac(ssl, verify, input, pLen - t, application_data, 1);
|
||||
else
|
||||
hmac(ssl, verify, input, pLen - t, application_data, 1);
|
||||
constant_compare(verify, input + pLen - t, t);
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
pad_check(dummy, (byte)padLen, MAX_PAD_SIZE - padLen - 1);
|
||||
if (ssl.isTLS())
|
||||
TLS_hmac(ssl, verify, input, pLen - padLen - 1 - t, application_data,1);
|
||||
else
|
||||
hmac(ssl, verify, input, pLen - padLen - 1 - t, application_data, 1);
|
||||
|
||||
compress_rounds(ssl, get_rounds(pLen, padLen, t), dummy);
|
||||
|
||||
if (constant_compare(verify, input + (pLen - padLen - 1 - t), t) != 0)
|
||||
return -1;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// Process handler for Data
|
||||
void Data::Process(input_buffer& input, SSL& ssl)
|
||||
{
|
||||
int msgSz = ssl.getSecurity().get_parms().encrypt_size_;
|
||||
int pad = 0, padSz = 0;
|
||||
int ivExtra = 0;
|
||||
int digestSz = ssl.getCrypto().get_digest().get_digestSize();
|
||||
const byte* rawData = input.get_buffer() + input.get_current();
|
||||
opaque verify[SHA_LEN];
|
||||
|
||||
if (ssl.getSecurity().get_parms().cipher_type_ == block) {
|
||||
if (ssl.isTLSv1_1()) // IV
|
||||
ivExtra = ssl.getCrypto().get_cipher().get_blockSize();
|
||||
pad = *(input.get_buffer() + input.get_current() + msgSz -ivExtra - 1);
|
||||
padSz = 1;
|
||||
|
||||
if (ssl.isTLS()) {
|
||||
if (timing_verify(ssl, rawData, pad,digestSz, msgSz-ivExtra) != 0) {
|
||||
ssl.SetError(verify_error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else { // SSLv3, some don't do this padding right
|
||||
int sz3 = msgSz - digestSz - pad - 1;
|
||||
hmac(ssl, verify, rawData, sz3, application_data, true);
|
||||
if (constant_compare(verify, rawData + sz3, digestSz) != 0) {
|
||||
ssl.SetError(verify_error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
int digestSz = ssl.getCrypto().get_digest().get_digestSize();
|
||||
else { // stream
|
||||
int streamSz = msgSz - digestSz;
|
||||
if (ssl.isTLS())
|
||||
TLS_hmac(ssl, verify, rawData, streamSz, application_data, true);
|
||||
else
|
||||
hmac(ssl, verify, rawData, streamSz, application_data, true);
|
||||
if (constant_compare(verify, rawData + streamSz, digestSz) != 0) {
|
||||
ssl.SetError(verify_error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
int dataSz = msgSz - ivExtra - digestSz - pad - padSz;
|
||||
opaque verify[SHA_LEN];
|
||||
|
||||
if (dataSz < 0) {
|
||||
ssl.SetError(bad_input);
|
||||
return;
|
||||
}
|
||||
|
||||
const byte* rawData = input.get_buffer() + input.get_current();
|
||||
|
||||
// read data
|
||||
if (dataSz) { // could be compressed
|
||||
if (ssl.CompressionOn()) {
|
||||
@ -1013,27 +1176,10 @@ void Data::Process(input_buffer& input, SSL& ssl)
|
||||
input.read(data->get_buffer(), dataSz);
|
||||
data->add_size(dataSz);
|
||||
}
|
||||
|
||||
if (ssl.isTLS())
|
||||
TLS_hmac(ssl, verify, rawData, dataSz, application_data, true);
|
||||
else
|
||||
hmac(ssl, verify, rawData, dataSz, application_data, true);
|
||||
}
|
||||
|
||||
// read mac and skip fill
|
||||
opaque mac[SHA_LEN];
|
||||
input.read(mac, digestSz);
|
||||
input.set_current(input.get_current() + pad + padSz);
|
||||
|
||||
// verify
|
||||
if (dataSz) {
|
||||
if (memcmp(mac, verify, digestSz)) {
|
||||
ssl.SetError(verify_error);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
ssl.get_SEQIncrement(true); // even though no data, increment verify
|
||||
// advance past mac and fill
|
||||
input.set_current(input.get_current() + digestSz + pad + padSz);
|
||||
}
|
||||
|
||||
|
||||
|
@ -1,3 +1,21 @@
|
||||
/*
|
||||
Copyright (c) 2006, 2012, Oracle and/or its affiliates.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; version 2 of the License.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; see the file COPYING. If not, write to the
|
||||
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston,
|
||||
MA 02110-1301 USA.
|
||||
*/
|
||||
|
||||
// benchmark.cpp
|
||||
// TaoCrypt benchmark
|
||||
|
||||
|
@ -1,4 +1,4 @@
|
||||
REM Copyright (C) 2006, 2007 MySQL AB
|
||||
REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
REM
|
||||
REM This program is free software; you can redistribute it and/or modify
|
||||
REM it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005-2007 MySQL AB, 2010 Sun Microsystems, Inc.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2006, 2010, Oracle and/or its affiliates
|
||||
Copyright (c) 2006, 2012, Oracle and/or its affiliates
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,6 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc.
|
||||
Use is subject to license terms.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2010, Oracle and/or its affiliates
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2010, Oracle and/or its affiliates
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2010, Oracle and/or its affiliates
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2006, 2010, Oracle and/or its affiliates
|
||||
Copyright (c) 2006, 2012, Oracle and/or its affiliates
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2010, Oracle and/or its affiliates
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (C) 2000-2007 MySQL AB
|
||||
Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2005, 2010, Oracle and/or its affiliates. All rights reserved.
|
||||
Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
|
@ -1,4 +1,4 @@
|
||||
REM Copyright (C) 2006, 2007 MySQL AB
|
||||
REM Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
|
||||
REM
|
||||
REM This program is free software; you can redistribute it and/or modify
|
||||
REM it under the terms of the GNU General Public License as published by
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user