1
0
mirror of https://github.com/MariaDB/server.git synced 2025-07-29 05:21:33 +03:00

mysql-5.5.31 merge

This commit is contained in:
Sergei Golubchik
2013-05-07 13:05:09 +02:00
264 changed files with 3748 additions and 1718 deletions

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#!/bin/sh #!/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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#!/bin/sh #!/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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,6 @@
#! /bin/sh #! /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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,6 @@
#! /bin/sh #! /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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,7 @@
#! /bin/sh #! /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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -1,4 +1,4 @@
MYSQL_VERSION_MAJOR=5 MYSQL_VERSION_MAJOR=5
MYSQL_VERSION_MINOR=5 MYSQL_VERSION_MINOR=5
MYSQL_VERSION_PATCH=30 MYSQL_VERSION_PATCH=31
MYSQL_VERSION_EXTRA= MYSQL_VERSION_EXTRA=

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 This program is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public modify it under the terms of the GNU Library General Public

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -18,7 +18,7 @@
/* By Jani Tolonen, 2001-04-20, MySQL Development Team */ /* 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 "client_priv.h"
#include <m_ctype.h> #include <m_ctype.h>
@ -32,6 +32,10 @@
#define EX_USAGE 1 #define EX_USAGE 1
#define EX_MYSQLERR 2 #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 MYSQL mysql_connection, *sock = 0;
static my_bool opt_alldbs = 0, opt_check_only_changed = 0, opt_extended = 0, static my_bool opt_alldbs = 0, opt_check_only_changed = 0, opt_extended = 0,
opt_compress = 0, opt_databases = 0, opt_fast = 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; *default_charset= 0, *current_host= 0;
static char *opt_plugin_dir= 0, *opt_default_auth= 0; static char *opt_plugin_dir= 0, *opt_default_auth= 0;
static int first_error = 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 char *shared_memory_base_name=0;
static uint opt_protocol=0; static uint opt_protocol=0;
@ -620,6 +624,17 @@ static int process_all_tables_in_db(char *database)
} /* process_all_tables_in_db */ } /* 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) 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)) if (strncmp(name, "#mysql50#", 9))
DBUG_RETURN(1); DBUG_RETURN(1);
sprintf(qbuf, "RENAME TABLE `%s` TO `%s`", name, name + 9); sprintf(qbuf, "RENAME TABLE `%s` TO `%s`", name, name + 9);
if (mysql_query(sock, qbuf)) rc= run_query(qbuf);
{
fprintf(stderr, "Failed to %s\n", qbuf);
fprintf(stderr, "Error: %s\n", mysql_error(sock));
rc= 1;
}
if (verbose) if (verbose)
printf("%-50s %s\n", name, rc ? "FAILED" : "OK"); printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
DBUG_RETURN(rc); DBUG_RETURN(rc);
@ -650,12 +660,7 @@ static int fix_database_storage_name(const char *name)
if (strncmp(name, "#mysql50#", 9)) if (strncmp(name, "#mysql50#", 9))
DBUG_RETURN(1); DBUG_RETURN(1);
sprintf(qbuf, "ALTER DATABASE `%s` UPGRADE DATA DIRECTORY NAME", name); sprintf(qbuf, "ALTER DATABASE `%s` UPGRADE DATA DIRECTORY NAME", name);
if (mysql_query(sock, qbuf)) rc= run_query(qbuf);
{
fprintf(stderr, "Failed to %s\n", qbuf);
fprintf(stderr, "Error: %s\n", mysql_error(sock));
rc= 1;
}
if (verbose) if (verbose)
printf("%-50s %s\n", name, rc ? "FAILED" : "OK"); printf("%-50s %s\n", name, rc ? "FAILED" : "OK");
DBUG_RETURN(rc); DBUG_RETURN(rc);
@ -726,15 +731,7 @@ static int use_db(char *database)
static int disable_binlog() static int disable_binlog()
{ {
const char *stmt= "SET SQL_LOG_BIN=0"; const char *stmt= "SET SQL_LOG_BIN=0";
DBUG_ENTER("disable_binlog"); return run_query(stmt);
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);
} }
static int handle_request_for_tables(char *tables, uint length) static int handle_request_for_tables(char *tables, uint length)
@ -821,6 +818,7 @@ static void print_result()
MYSQL_RES *res; MYSQL_RES *res;
MYSQL_ROW row; MYSQL_ROW row;
char prev[(NAME_LEN+9)*2+2]; char prev[(NAME_LEN+9)*2+2];
char prev_alter[MAX_ALTER_STR_SIZE];
uint i; uint i;
my_bool found_error=0, table_rebuild=0; my_bool found_error=0, table_rebuild=0;
DBUG_ENTER("print_result"); DBUG_ENTER("print_result");
@ -828,6 +826,7 @@ static void print_result()
res = mysql_use_result(sock); res = mysql_use_result(sock);
prev[0] = '\0'; prev[0] = '\0';
prev_alter[0]= 0;
for (i = 0; (row = mysql_fetch_row(res)); i++) for (i = 0; (row = mysql_fetch_row(res)); i++)
{ {
int changed = strcmp(prev, row[0]); int changed = strcmp(prev, row[0]);
@ -844,12 +843,18 @@ static void print_result()
strcmp(row[3],"OK")) strcmp(row[3],"OK"))
{ {
if (table_rebuild) if (table_rebuild)
{
if (prev_alter[0])
insert_dynamic(&alter_table_cmds, (uchar*) prev_alter);
else
insert_dynamic(&tables4rebuild, (uchar*) prev); insert_dynamic(&tables4rebuild, (uchar*) prev);
}
else else
insert_dynamic(&tables4repair, (uchar*) prev); insert_dynamic(&tables4repair, (uchar*) prev);
} }
found_error=0; found_error=0;
table_rebuild=0; table_rebuild=0;
prev_alter[0]= 0;
if (opt_silent) if (opt_silent)
continue; continue;
} }
@ -866,11 +871,30 @@ static void print_result()
printf("%-50s %s", row[0], "Needs upgrade"); printf("%-50s %s", row[0], "Needs upgrade");
else else
printf("%s\n%-9s: %s", row[0], row[2], row[3]); printf("%s\n%-9s: %s", row[0], row[2], row[3]);
if (strcmp(row[2],"note")) if (opt_auto_repair && strcmp(row[2],"note"))
{ {
const char *alter_txt= strstr(row[3], "ALTER TABLE");
found_error=1; found_error=1;
if (opt_auto_repair && strstr(row[3], "ALTER TABLE") != NULL) if (alter_txt)
{
table_rebuild=1; 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 else
@ -882,7 +906,12 @@ static void print_result()
if (found_error && opt_auto_repair && what_to_do != DO_REPAIR) if (found_error && opt_auto_repair && what_to_do != DO_REPAIR)
{ {
if (table_rebuild) if (table_rebuild)
{
if (prev_alter[0])
insert_dynamic(&alter_table_cmds, (uchar*) prev_alter);
else
insert_dynamic(&tables4rebuild, (uchar*) prev); insert_dynamic(&tables4rebuild, (uchar*) prev);
}
else else
insert_dynamic(&tables4repair, (uchar*) prev); insert_dynamic(&tables4repair, (uchar*) prev);
} }
@ -995,7 +1024,8 @@ int main(int argc, char **argv)
if (opt_auto_repair && if (opt_auto_repair &&
(my_init_dynamic_array(&tables4repair, sizeof(char)*(NAME_LEN*2+2),16,64) || (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; goto end;
if (opt_alldbs) if (opt_alldbs)
@ -1020,6 +1050,8 @@ int main(int argc, char **argv)
} }
for (i = 0; i < tables4rebuild.elements ; i++) for (i = 0; i < tables4rebuild.elements ; i++)
rebuild_table((char*) dynamic_array_ptr(&tables4rebuild, 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); ret= test(first_error);

View File

@ -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. Copyright (c) 2010, 2013, Monty Program Ab.
This program is free software; you can redistribute it and/or modify This program is free software; you can redistribute it and/or modify

View File

@ -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 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 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) if (from->Alloced_length >= from_length)
return from; return from;
if (from->alloced || !to || from == to) if ((from->alloced && (from->Alloced_length != 0)) || !to || from == to)
{ {
(void) from->realloc(from_length); (void) from->realloc(from_length);
return from; return from;

View File

@ -1,6 +1,6 @@
#!/usr/bin/perl #!/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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -57,13 +57,17 @@ MACRO (MYSQL_CHECK_ZLIB_WITH_COMPRESS)
INCLUDE(CheckFunctionExists) INCLUDE(CheckFunctionExists)
SET(CMAKE_REQUIRED_LIBRARIES z) SET(CMAKE_REQUIRED_LIBRARIES z)
CHECK_FUNCTION_EXISTS(crc32 HAVE_CRC32) CHECK_FUNCTION_EXISTS(crc32 HAVE_CRC32)
CHECK_FUNCTION_EXISTS(compressBound HAVE_COMPRESSBOUND)
CHECK_FUNCTION_EXISTS(deflateBound HAVE_DEFLATEBOUND)
SET(CMAKE_REQUIRED_LIBRARIES) 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(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 "") SET(ZLIB_SOURCES "")
ELSE() ELSE()
SET(ZLIB_FOUND FALSE CACHE INTERNAL "Zlib found but not usable") SET(ZLIB_FOUND FALSE CACHE INTERNAL "Zlib found but not usable")
MESSAGE(STATUS "system zlib found but not usable")
ENDIF() ENDIF()
ENDIF() ENDIF()
IF(NOT ZLIB_FOUND) IF(NOT ZLIB_FOUND)

View File

@ -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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 # 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 # it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2008 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2006, 2007 MySQL AB, 2008 Sun Microsystems, Inc. Copyright (c) 2006, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2010 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by
@ -53,7 +52,8 @@ enum YasslError {
badVersion_error = 117, badVersion_error = 117,
compress_error = 118, compress_error = 118,
decompress_error = 119, decompress_error = 119,
pms_version_error = 120 pms_version_error = 120,
sanityCipher_error = 121
// !!!! add error message to .cpp !!!! // !!!! add error message to .cpp !!!!

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2008 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2008 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 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 MAX_RECORD_SIZE = 16384; // 2^14, max size by standard
const int COMPRESS_EXTRA = 1024; // extra compression possible addition const int COMPRESS_EXTRA = 1024; // extra compression possible addition
const int SESSION_FLUSH_COUNT = 256; // when to flush session cache 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 typedef uint8 Cipher; // first byte is always 0x00 for SSLv3 & TLS

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2008, 2009 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2008 MySQL AB, 2009 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 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 // decrypt input message in place, store size in case needed later
void decrypt_message(SSL& ssl, input_buffer& input, uint sz) void decrypt_message(SSL& ssl, input_buffer& input, uint sz)
{ {
input_buffer plain(sz); input_buffer plain(sz);
opaque* cipher = input.get_buffer() + input.get_current(); 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); ssl.useCrypto().use_cipher().decrypt(plain.get_buffer(), cipher, sz);
memcpy(cipher, plain.get_buffer(), sz); memcpy(cipher, plain.get_buffer(), sz);
ssl.useSecurity().use_parms().encrypt_size_ = sz; ssl.useSecurity().use_parms().encrypt_size_ = sz;
@ -774,6 +806,8 @@ int DoProcessReply(SSL& ssl)
return 0; return 0;
} }
decrypt_message(ssl, buffer, hdr.length_); decrypt_message(ssl, buffer, hdr.length_);
if (ssl.GetError())
return 0;
} }
mySTL::auto_ptr<Message> msg(mf.CreateObject(hdr.type_)); mySTL::auto_ptr<Message> msg(mf.CreateObject(hdr.type_));

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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
REM This program is free software; you can redistribute it and/or modify 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 REM it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2008-2010 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 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); strncpy(buffer, "bad PreMasterSecret version error", max);
break; break;
case sanityCipher_error :
strncpy(buffer, "sanity check on cipher text size error", max);
break;
// openssl errors // openssl errors
case SSL_ERROR_WANT_READ : case SSL_ERROR_WANT_READ :
strncpy(buffer, "the read operation would block", max); strncpy(buffer, "the read operation would block", max);

View File

@ -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 // Process handler for Data
void Data::Process(input_buffer& input, SSL& ssl) void Data::Process(input_buffer& input, SSL& ssl)
{ {
int msgSz = ssl.getSecurity().get_parms().encrypt_size_; int msgSz = ssl.getSecurity().get_parms().encrypt_size_;
int pad = 0, padSz = 0; int pad = 0, padSz = 0;
int ivExtra = 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.getSecurity().get_parms().cipher_type_ == block) {
if (ssl.isTLSv1_1()) // IV if (ssl.isTLSv1_1()) // IV
ivExtra = ssl.getCrypto().get_cipher().get_blockSize(); ivExtra = ssl.getCrypto().get_cipher().get_blockSize();
pad = *(input.get_buffer() + input.get_current() + msgSz -ivExtra - 1); pad = *(input.get_buffer() + input.get_current() + msgSz -ivExtra - 1);
padSz = 1; padSz = 1;
if (ssl.isTLS()) {
if (timing_verify(ssl, rawData, pad,digestSz, msgSz-ivExtra) != 0) {
ssl.SetError(verify_error);
return;
} }
int digestSz = ssl.getCrypto().get_digest().get_digestSize(); }
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;
}
}
}
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; int dataSz = msgSz - ivExtra - digestSz - pad - padSz;
opaque verify[SHA_LEN];
if (dataSz < 0) { if (dataSz < 0) {
ssl.SetError(bad_input); ssl.SetError(bad_input);
return; return;
} }
const byte* rawData = input.get_buffer() + input.get_current();
// read data // read data
if (dataSz) { // could be compressed if (dataSz) { // could be compressed
if (ssl.CompressionOn()) { if (ssl.CompressionOn()) {
@ -1013,27 +1176,10 @@ void Data::Process(input_buffer& input, SSL& ssl)
input.read(data->get_buffer(), dataSz); input.read(data->get_buffer(), dataSz);
data->add_size(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 // advance past mac and fill
opaque mac[SHA_LEN]; input.set_current(input.get_current() + digestSz + pad + padSz);
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
} }

View File

@ -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 // benchmark.cpp
// TaoCrypt benchmark // TaoCrypt benchmark

View File

@ -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
REM This program is free software; you can redistribute it and/or modify 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 REM it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2010 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -1,6 +1,5 @@
/* /*
Copyright (c) 2005-2007 MySQL AB, 2009 Sun Microsystems, Inc. Copyright (c) 2005, 2012, Oracle and/or its affiliates. All rights reserved.
Use is subject to license terms.
This program is free software; you can redistribute it and/or modify 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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
REM This program is free software; you can redistribute it and/or modify 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 REM it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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 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 it under the terms of the GNU General Public License as published by

View File

@ -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
REM This program is free software; you can redistribute it and/or modify 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 REM it under the terms of the GNU General Public License as published by

View File

@ -1,5 +1,5 @@
/* /*
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 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 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