Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
MariaDB
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
MariaDB
Commits
3c87e6f5
Commit
3c87e6f5
authored
May 27, 2011
by
Anitha Gopi
Browse files
Options
Browse Files
Download
Plain Diff
Automerge : Updating local tree
parents
668972a0
915d24d0
Changes
28
Hide whitespace changes
Inline
Side-by-side
Showing
28 changed files
with
283 additions
and
86 deletions
+283
-86
BUILD/SETUP.sh
BUILD/SETUP.sh
+2
-2
cmake/configure.pl
cmake/configure.pl
+5
-0
cmake/os/WindowsCache.cmake
cmake/os/WindowsCache.cmake
+1
-0
include/violite.h
include/violite.h
+3
-3
libmysql/errmsg.c
libmysql/errmsg.c
+1
-1
mysql-test/lib/mtr_cases.pm
mysql-test/lib/mtr_cases.pm
+4
-2
mysql-test/lib/mtr_misc.pl
mysql-test/lib/mtr_misc.pl
+35
-0
mysql-test/mysql-test-run.pl
mysql-test/mysql-test-run.pl
+10
-7
mysql-test/r/func_math.result
mysql-test/r/func_math.result
+6
-0
mysql-test/r/openssl_1.result
mysql-test/r/openssl_1.result
+7
-7
mysql-test/suite/binlog/r/binlog_reset_master.result
mysql-test/suite/binlog/r/binlog_reset_master.result
+1
-0
mysql-test/suite/binlog/t/binlog_reset_master.test
mysql-test/suite/binlog/t/binlog_reset_master.test
+26
-0
mysql-test/suite/innodb/r/innodb_mysql.result
mysql-test/suite/innodb/r/innodb_mysql.result
+17
-1
mysql-test/suite/innodb/t/innodb_mysql.test
mysql-test/suite/innodb/t/innodb_mysql.test
+22
-2
mysql-test/suite/rpl/t/rpl_typeconv-master.opt
mysql-test/suite/rpl/t/rpl_typeconv-master.opt
+1
-0
mysql-test/t/func_math.test
mysql-test/t/func_math.test
+6
-0
sql-common/client.c
sql-common/client.c
+24
-11
sql/item_func.cc
sql/item_func.cc
+3
-0
sql/log.cc
sql/log.cc
+7
-6
sql/mysqld.cc
sql/mysqld.cc
+6
-0
sql/sql_acl.cc
sql/sql_acl.cc
+2
-2
sql/sql_parse.cc
sql/sql_parse.cc
+62
-21
vio/test-ssl.c
vio/test-ssl.c
+6
-3
vio/test-sslclient.c
vio/test-sslclient.c
+6
-2
vio/test-sslserver.c
vio/test-sslserver.c
+2
-1
vio/viossl.c
vio/viossl.c
+9
-8
vio/viosslfactories.c
vio/viosslfactories.c
+3
-4
vio/viotest-ssl.c
vio/viotest-ssl.c
+6
-3
No files found.
BUILD/SETUP.sh
View file @
3c87e6f5
#!/bin/sh
# Copyright (
C) 2000, 2007 MySQL AB
# Copyright (
c) 2000, 2011, 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 Library General Public
...
...
@@ -250,7 +250,7 @@ gcov_compile_flags="$gcov_compile_flags -DMYSQL_SERVER_SUFFIX=-gcov -DHAVE_gcov"
gcov_link_flags
=
"-fprofile-arcs -ftest-coverage"
gcov_configs
=
"--
disable-shared
"
gcov_configs
=
"--
with-gcov
"
# gprof
...
...
cmake/configure.pl
View file @
3c87e6f5
...
...
@@ -190,6 +190,11 @@ foreach my $option (@ARGV)
$cmakeargs
=
$cmakeargs
.
"
\"
-DWITH_COMMENT=
"
.
substr
(
$option
,
13
)
.
"
\"
";
next
;
}
if
(
$option
=~
/with-gcov/
)
{
$cmakeargs
=
$cmakeargs
.
"
-DENABLE_GCOV=ON
";
next
;
}
$option
=
uc
(
$option
);
$option
=~
s/-/_/g
;
...
...
cmake/os/WindowsCache.cmake
View file @
3c87e6f5
...
...
@@ -341,6 +341,7 @@ SET(SIGNAL_RETURN_TYPE_IS_VOID 1 CACHE INTERNAL "")
SET
(
C_HAS_inline CACHE INTERNAL
""
)
SET
(
C_HAS___inline 1 CACHE INTERNAL
""
)
SET
(
FIONREAD_IN_SYS_IOCTL CACHE INTERNAL
""
)
SET
(
FIONREAD_IN_SYS_FILIO CACHE INTERNAL
""
)
SET
(
GWINSZ_IN_SYS_IOCTL CACHE INTERNAL
""
)
SET
(
HAVE_CXXABI_H CACHE INTERNAL
""
)
SET
(
HAVE_NDIR_H CACHE INTERNAL
""
)
...
...
include/violite.h
View file @
3c87e6f5
...
...
@@ -134,13 +134,13 @@ struct st_VioSSLFd
SSL_CTX
*
ssl_context
;
};
int
sslaccept
(
struct
st_VioSSLFd
*
,
Vio
*
,
long
timeout
);
int
sslconnect
(
struct
st_VioSSLFd
*
,
Vio
*
,
long
timeout
);
int
sslaccept
(
struct
st_VioSSLFd
*
,
Vio
*
,
long
timeout
,
unsigned
long
*
errptr
);
int
sslconnect
(
struct
st_VioSSLFd
*
,
Vio
*
,
long
timeout
,
unsigned
long
*
errptr
);
struct
st_VioSSLFd
*
new_VioSSLConnectorFd
(
const
char
*
key_file
,
const
char
*
cert_file
,
const
char
*
ca_file
,
const
char
*
ca_path
,
const
char
*
cipher
);
const
char
*
cipher
,
enum
enum_ssl_init_error
*
error
);
struct
st_VioSSLFd
*
new_VioSSLAcceptorFd
(
const
char
*
key_file
,
const
char
*
cert_file
,
const
char
*
ca_file
,
const
char
*
ca_path
,
...
...
libmysql/errmsg.c
View file @
3c87e6f5
...
...
@@ -51,7 +51,7 @@ const char *client_errors[]=
"Error on SHOW SLAVE HOSTS:"
,
"Error connecting to slave:"
,
"Error connecting to master:"
,
"SSL connection error"
,
"SSL connection error
: %-.100s
"
,
"Malformed packet"
,
"This client library is licensed only for use with MySQL servers having '%s' license"
,
"Invalid use of null pointer"
,
...
...
mysql-test/lib/mtr_cases.pm
View file @
3c87e6f5
...
...
@@ -287,9 +287,11 @@ sub collect_one_suite($)
"
mysql-test/suite
",
"
mysql-test
",
# Look in storage engine specific suite dirs
"
storage/*/mysql-test-suites
"
"
storage/*/mtr
",
# Look in plugin specific suite dir
"
plugin/
$suite
/tests
",
],
[
$suite
]);
[
$suite
,
"
mtr
"
]);
}
mtr_verbose
("
suitedir:
$suitedir
");
}
...
...
mysql-test/lib/mtr_misc.pl
View file @
3c87e6f5
...
...
@@ -31,6 +31,7 @@ sub mtr_script_exists(@);
sub
mtr_file_exists
(@);
sub
mtr_exe_exists
(@);
sub
mtr_exe_maybe_exists
(@);
sub
mtr_compress_file
($);
sub
mtr_milli_sleep
($);
sub
start_timer
($);
sub
has_expired
($);
...
...
@@ -199,6 +200,40 @@ sub mtr_exe_exists (@) {
}
}
#
# Try to compress file using tools that might be available.
# If zip/gzip is not available, just silently ignore.
#
sub
mtr_compress_file
($)
{
my
(
$filename
)
=
@_
;
mtr_error
("
File to compress not found:
$filename
")
unless
-
f
$filename
;
my
$did_compress
=
0
;
if
(
IS_WINDOWS
)
{
# Capture stderr
my
$ziperr
=
`
zip
$filename
.zip
$filename
2>&1
`;
if
(
$?
)
{
print
"
$ziperr
\n
"
if
$ziperr
!~
/recognized as an internal or external/
;
}
else
{
unlink
(
$filename
);
$did_compress
=
1
;
}
}
else
{
my
$gzres
=
system
("
gzip
$filename
");
$did_compress
=
!
$gzres
;
if
(
$gzres
&&
$gzres
!=
-
1
)
{
mtr_error
("
Error: have gzip but it fails to compress core file
");
}
}
mtr_print
("
Compressed file
$filename
")
if
$did_compress
;
}
sub
mtr_milli_sleep
($)
{
die
"
usage: mtr_milli_sleep(milliseconds)
"
unless
@_
==
1
;
...
...
mysql-test/mysql-test-run.pl
View file @
3c87e6f5
...
...
@@ -263,7 +263,6 @@ my $opt_shutdown_timeout= $ENV{MTR_SHUTDOWN_TIMEOUT} || 10; # seconds
my
$opt_start_timeout
=
$ENV
{
MTR_START_TIMEOUT
}
||
180
;
# seconds
sub
suite_timeout
{
return
$opt_suite_timeout
*
60
;
};
sub
check_timeout
{
return
$opt_testcase_timeout
*
6
;
};
my
$opt_wait_all
;
my
$opt_user_args
;
...
...
@@ -299,6 +298,8 @@ sub testcase_timeout ($) {
return
$opt_testcase_timeout
*
60
;
}
sub
check_timeout
($)
{
return
testcase_timeout
(
$_
[
0
])
/
10
;
}
our
$opt_warnings
=
1
;
our
$opt_include_ndbcluster
=
0
;
...
...
@@ -657,6 +658,8 @@ sub run_test_server ($$$) {
mtr_report
("
- deleting it, already saved
",
"
$opt_max_save_core
");
unlink
("
$core_file
");
}
else
{
mtr_compress_file
(
$core_file
)
unless
@opt_cases
;
}
++
$num_saved_cores
;
}
...
...
@@ -3413,7 +3416,7 @@ sub check_testcase($$)
# Return immediately if no check proceess was started
return
0
unless
(
keys
%
started
);
my
$timeout
=
start_timer
(
check_timeout
());
my
$timeout
=
start_timer
(
check_timeout
(
$tinfo
));
while
(
1
){
my
$result
;
...
...
@@ -3485,7 +3488,7 @@ test case was executed:\n";
}
elsif
(
$proc
->
{
timeout
}
)
{
$tinfo
->
{
comment
}
.=
"
Timeout for 'check-testcase' expired after
"
.
check_timeout
()
.
"
seconds
";
.
check_timeout
(
$tinfo
)
.
"
seconds
";
$result
=
4
;
}
else
{
...
...
@@ -3575,7 +3578,7 @@ sub run_on_all($$)
# Return immediately if no check proceess was started
return
0
unless
(
keys
%
started
);
my
$timeout
=
start_timer
(
check_timeout
());
my
$timeout
=
start_timer
(
check_timeout
(
$tinfo
));
while
(
1
){
my
$result
;
...
...
@@ -3606,7 +3609,7 @@ sub run_on_all($$)
}
elsif
(
$proc
->
{
timeout
})
{
$tinfo
->
{
comment
}
.=
"
Timeout for '
$run
' expired after
"
.
check_timeout
()
.
"
seconds
";
.
check_timeout
(
$tinfo
)
.
"
seconds
";
}
else
{
# Unknown process returned, most likley a crash, abort everything
...
...
@@ -4331,7 +4334,7 @@ sub check_warnings ($) {
# Return immediately if no check proceess was started
return
0
unless
(
keys
%
started
);
my
$timeout
=
start_timer
(
check_timeout
());
my
$timeout
=
start_timer
(
check_timeout
(
$tinfo
));
while
(
1
){
my
$result
=
0
;
...
...
@@ -4383,7 +4386,7 @@ sub check_warnings ($) {
}
elsif
(
$proc
->
{
timeout
}
)
{
$tinfo
->
{
comment
}
.=
"
Timeout for 'check warnings' expired after
"
.
check_timeout
()
.
"
seconds
";
.
check_timeout
(
$tinfo
)
.
"
seconds
";
$result
=
4
;
}
else
{
...
...
mysql-test/r/func_math.result
View file @
3c87e6f5
...
...
@@ -543,6 +543,12 @@ ROUND(LEAST(15, -4939092, 0.2704), STDDEV('a'))
-4939092.0000
Warnings:
Warning 1292 Truncated incorrect DOUBLE value: 'a'
#
# Bug#12392636 ASSERTION FAILED: SCALE >= 0 && PRECISION > 0 && SCALE <= PRECISION
#
SELECT SUM(DISTINCT (TRUNCATE((.1), NULL)));
SUM(DISTINCT (TRUNCATE((.1), NULL)))
NULL
End of 5.1 tests
#
# Bug #8433: Overflow must be an error
...
...
mysql-test/r/openssl_1.result
View file @
3c87e6f5
...
...
@@ -44,13 +44,13 @@ ERROR 42000: DELETE command denied to user 'ssl_user4'@'localhost' for table 't1
drop user ssl_user1@localhost, ssl_user2@localhost,
ssl_user3@localhost, ssl_user4@localhost, ssl_user5@localhost;
drop table t1;
mysqltest: Could not open connection 'default': 2026 SSL connection error
mysqltest: Could not open connection 'default': 2026 SSL connection error
mysqltest: Could not open connection 'default': 2026 SSL connection error
mysqltest: Could not open connection 'default': 2026 SSL connection error
: ASN: bad other signature confirmation
mysqltest: Could not open connection 'default': 2026 SSL connection error
: ASN: bad other signature confirmation
mysqltest: Could not open connection 'default': 2026 SSL connection error
: ASN: bad other signature confirmation
SSL error: Unable to get private key from ''
mysqltest: Could not open connection 'default': 2026 SSL connection error
mysqltest: Could not open connection 'default': 2026 SSL connection error
: Unable to get private key
SSL error: Unable to get certificate from ''
mysqltest: Could not open connection 'default': 2026 SSL connection error
mysqltest: Could not open connection 'default': 2026 SSL connection error
: Unable to get certificate
SHOW STATUS LIKE 'Ssl_cipher';
Variable_name Value
Ssl_cipher DHE-RSA-AES256-SHA
...
...
@@ -83,7 +83,7 @@ Ssl_cipher AES128-SHA
SHOW STATUS LIKE 'Ssl_cipher';
Variable_name Value
Ssl_cipher AES128-SHA
mysqltest: Could not open connection 'default': 2026 SSL connection error
mysqltest: Could not open connection 'default': 2026 SSL connection error
: SSL_CTX_new failed
CREATE TABLE t1(a int);
INSERT INTO t1 VALUES (1), (2);
...
...
@@ -189,7 +189,7 @@ UNLOCK TABLES;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
SSL error: Unable to get private key from 'MYSQL_TEST_DIR/std_data/client-cert.pem'
mysqldump: Got error: 2026: SSL connection error when trying to connect
mysqldump: Got error: 2026: SSL connection error
: Unable to get private key
when trying to connect
DROP TABLE t1;
Variable_name Value
Ssl_cipher DHE-RSA-AES256-SHA
...
...
mysql-test/suite/binlog/r/binlog_reset_master.result
0 → 100644
View file @
3c87e6f5
RESET MASTER;
mysql-test/suite/binlog/t/binlog_reset_master.test
0 → 100644
View file @
3c87e6f5
# ==== Purpose ====
#
# Test bugs in RESET MASTER.
--
source
include
/
have_debug
.
inc
--
source
include
/
have_log_bin
.
inc
#######################################################################
# BUG#12574820: binlog.binlog_tmp_table timing out in daily and weekly trunk run
# Problem: MYSQL_BIN_LOG::reset_logs acquired LOCK_thread_count and
# LOCK_log in the wrong order. This could cause a deadlock when
# RESET MASTER was run concurrently with a disconnecting thread.
#######################################################################
# We use sleep, not debug_sync, because the sync point needs to be in
# the thread shut down code after the debug sync facility has been
# shut down.
--
let
$write_var
=
SET
DEBUG
=
"+d,sleep_after_lock_thread_count_before_delete_thd"
;
CREATE
TEMPORARY
TABLE
test
.
t1
(
a
INT
);
--
let
$write_to_file
=
GENERATE
--
disable_query_log
--
source
include
/
write_var_to_file
.
inc
--
enable_query_log
--
exec
$MYSQL
<
$write_to_file
RESET
MASTER
;
--
remove_file
$write_to_file
mysql-test/suite/innodb/r/innodb_mysql.result
View file @
3c87e6f5
...
...
@@ -2663,7 +2663,6 @@ COUNT(*)
1537
SET SESSION sort_buffer_size = DEFAULT;
DROP TABLE t1;
End of 5.1 tests
#
# Test for bug #39932 "create table fails if column for FK is in different
# case than in corr index".
...
...
@@ -2685,6 +2684,23 @@ t2 CREATE TABLE `t2` (
) ENGINE=InnoDB DEFAULT CHARSET=latin1
drop table t2, t1;
#
# Test for bug #11762012 - "54553: INNODB ASSERTS IN HA_INNOBASE::
# UPDATE_ROW, TEMPORARY TABLE, TABLE LOCK".
#
DROP TABLE IF EXISTS t1;
CREATE TEMPORARY TABLE t1 (c int) ENGINE = InnoDB;
INSERT INTO t1 VALUES (1);
LOCK TABLES t1 READ;
# Even though temporary table was locked for READ we
# still allow writes to it to be compatible with MyISAM.
# This is possible since due to fact that temporary tables
# are specific to connection and therefore locking for them
# is irrelevant.
UPDATE t1 SET c = 5;
UNLOCK TABLES;
DROP TEMPORARY TABLE t1;
End of 5.1 tests
#
# Bug#44613 SELECT statement inside FUNCTION takes a shared lock
#
DROP TABLE IF EXISTS t1;
...
...
mysql-test/suite/innodb/t/innodb_mysql.test
View file @
3c87e6f5
...
...
@@ -830,8 +830,6 @@ SET SESSION sort_buffer_size = DEFAULT;
DROP
TABLE
t1
;
--
echo
End
of
5.1
tests
--
echo
#
--
echo
# Test for bug #39932 "create table fails if column for FK is in different
...
...
@@ -851,6 +849,28 @@ show create table t2;
drop
table
t2
,
t1
;
--
echo
#
--
echo
# Test for bug #11762012 - "54553: INNODB ASSERTS IN HA_INNOBASE::
--
echo
# UPDATE_ROW, TEMPORARY TABLE, TABLE LOCK".
--
echo
#
--
disable_warnings
DROP
TABLE
IF
EXISTS
t1
;
--
enable_warnings
CREATE
TEMPORARY
TABLE
t1
(
c
int
)
ENGINE
=
InnoDB
;
INSERT
INTO
t1
VALUES
(
1
);
LOCK
TABLES
t1
READ
;
--
echo
# Even though temporary table was locked for READ we
--
echo
# still allow writes to it to be compatible with MyISAM.
--
echo
# This is possible since due to fact that temporary tables
--
echo
# are specific to connection and therefore locking for them
--
echo
# is irrelevant.
UPDATE
t1
SET
c
=
5
;
UNLOCK
TABLES
;
DROP
TEMPORARY
TABLE
t1
;
--
echo
End
of
5.1
tests
--
echo
#
--
echo
# Bug#44613 SELECT statement inside FUNCTION takes a shared lock
--
echo
#
...
...
mysql-test/suite/rpl/t/rpl_typeconv-master.opt
0 → 100644
View file @
3c87e6f5
--testcase-timeout=40
mysql-test/t/func_math.test
View file @
3c87e6f5
...
...
@@ -370,6 +370,12 @@ DROP TABLE t1;
SELECT
ROUND
(
LEAST
(
15
,
-
4939092
,
0.2704
),
STDDEV
(
'a'
));
--
echo
#
--
echo
# Bug#12392636 ASSERTION FAILED: SCALE >= 0 && PRECISION > 0 && SCALE <= PRECISION
--
echo
#
SELECT
SUM
(
DISTINCT
(
TRUNCATE
((
.
1
),
NULL
)));
--
echo
End
of
5.1
tests
--
echo
#
...
...
sql-common/client.c
View file @
3c87e6f5
...
...
@@ -1840,6 +1840,8 @@ mysql_get_ssl_cipher(MYSQL *mysql __attribute__((unused)))
ssl_verify_server_cert()
vio pointer to a SSL connected vio
server_hostname name of the server that we connected to
errptr if we fail, we'll return (a pointer to a string
describing) the reason here
RETURN VALUES
0 Success
...
...
@@ -1849,7 +1851,7 @@ mysql_get_ssl_cipher(MYSQL *mysql __attribute__((unused)))
#if defined(HAVE_OPENSSL) && !defined(EMBEDDED_LIBRARY)
static
int
ssl_verify_server_cert
(
Vio
*
vio
,
const
char
*
server_hostname
)
static
int
ssl_verify_server_cert
(
Vio
*
vio
,
const
char
*
server_hostname
,
const
char
**
errptr
)
{
SSL
*
ssl
;
X509
*
server_cert
;
...
...
@@ -1860,19 +1862,19 @@ static int ssl_verify_server_cert(Vio *vio, const char* server_hostname)
if
(
!
(
ssl
=
(
SSL
*
)
vio
->
ssl_arg
))
{
DBUG_PRINT
(
"error"
,
(
"No SSL pointer found"
))
;
*
errptr
=
"No SSL pointer found"
;
DBUG_RETURN
(
1
);
}
if
(
!
server_hostname
)
{
DBUG_PRINT
(
"error"
,
(
"No server hostname supplied"
))
;
*
errptr
=
"No server hostname supplied"
;
DBUG_RETURN
(
1
);
}
if
(
!
(
server_cert
=
SSL_get_peer_certificate
(
ssl
)))
{
DBUG_PRINT
(
"error"
,
(
"Could not get server certificate"
))
;
*
errptr
=
"Could not get server certificate"
;
DBUG_RETURN
(
1
);
}
...
...
@@ -1901,7 +1903,7 @@ static int ssl_verify_server_cert(Vio *vio, const char* server_hostname)
DBUG_RETURN
(
0
);
}
}
DBUG_PRINT
(
"error"
,
(
"SSL certificate validation failure"
))
;
*
errptr
=
"SSL certificate validation failure"
;
DBUG_RETURN
(
1
);
}
...
...
@@ -2507,6 +2509,9 @@ static int send_client_reply_packet(MCPVIO_EXT *mpvio,
/* Do the SSL layering. */
struct
st_mysql_options
*
options
=
&
mysql
->
options
;
struct
st_VioSSLFd
*
ssl_fd
;
enum
enum_ssl_init_error
ssl_init_error
;
const
char
*
cert_error
;
unsigned
long
ssl_error
;
/*
Send mysql->client_flag, max_packet_size - unencrypted otherwise
...
...
@@ -2526,9 +2531,11 @@ static int send_client_reply_packet(MCPVIO_EXT *mpvio,
options
->
ssl_cert
,
options
->
ssl_ca
,
options
->
ssl_capath
,
options
->
ssl_cipher
)))
options
->
ssl_cipher
,
&
ssl_init_error
)))
{
set_mysql_error
(
mysql
,
CR_SSL_CONNECTION_ERROR
,
unknown_sqlstate
);
set_mysql_extended_error
(
mysql
,
CR_SSL_CONNECTION_ERROR
,
unknown_sqlstate
,
ER
(
CR_SSL_CONNECTION_ERROR
),
sslGetErrString
(
ssl_init_error
));
goto
error
;
}
mysql
->
connector_fd
=
(
unsigned
char
*
)
ssl_fd
;
...
...
@@ -2536,18 +2543,24 @@ static int send_client_reply_packet(MCPVIO_EXT *mpvio,
/* Connect to the server */
DBUG_PRINT
(
"info"
,
(
"IO layer change in progress..."
));
if
(
sslconnect
(
ssl_fd
,
net
->
vio
,
(
long
)
(
mysql
->
options
.
connect_timeout
)))
(
long
)
(
mysql
->
options
.
connect_timeout
)
,
&
ssl_error
))
{
set_mysql_error
(
mysql
,
CR_SSL_CONNECTION_ERROR
,
unknown_sqlstate
);
char
buf
[
512
];
ERR_error_string_n
(
ssl_error
,
buf
,
512
);
buf
[
511
]
=
0
;
set_mysql_extended_error
(
mysql
,
CR_SSL_CONNECTION_ERROR
,
unknown_sqlstate
,
ER
(
CR_SSL_CONNECTION_ERROR
),
buf
);
goto
error
;
}
DBUG_PRINT
(
"info"
,
(
"IO layer change done!"
));
/* Verify server cert */
if
((
mysql
->
client_flag
&
CLIENT_SSL_VERIFY_SERVER_CERT
)
&&
ssl_verify_server_cert
(
net
->
vio
,
mysql
->
host
))
ssl_verify_server_cert
(
net
->
vio
,
mysql
->
host
,
&
cert_error
))
{
set_mysql_error
(
mysql
,
CR_SSL_CONNECTION_ERROR
,
unknown_sqlstate
);
set_mysql_extended_error
(
mysql
,
CR_SSL_CONNECTION_ERROR
,
unknown_sqlstate
,
ER
(
CR_SSL_CONNECTION_ERROR
),
cert_error
);
goto
error
;
}
}
...
...
sql/item_func.cc
View file @
3c87e6f5
...
...
@@ -2259,6 +2259,9 @@ void Item_func_round::fix_length_and_dec()
}
val1
=
args
[
1
]
->
val_int
();
if
((
null_value
=
args
[
1
]
->
is_null
()))
return
;
val1_unsigned
=
args
[
1
]
->
unsigned_flag
;
if
(
val1
<
0
)
decimals_to_set
=
val1_unsigned
?
INT_MAX
:
0
;
...
...
sql/log.cc
View file @
3c87e6f5
...
...
@@ -3372,12 +3372,6 @@ bool MYSQL_BIN_LOG::reset_logs(THD* thd)
DBUG_ENTER
(
"reset_logs"
);
ha_reset_logs
(
thd
);
/*
We need to get both locks to be sure that no one is trying to
write to the index log file.
*/
mysql_mutex_lock
(
&
LOCK_log
);
mysql_mutex_lock
(
&
LOCK_index
);
/*
The following mutex is needed to ensure that no threads call
...
...
@@ -3387,6 +3381,13 @@ bool MYSQL_BIN_LOG::reset_logs(THD* thd)
*/
mysql_mutex_lock
(
&
LOCK_thread_count
);
/*
We need to get both locks to be sure that no one is trying to
write to the index log file.
*/
mysql_mutex_lock
(
&
LOCK_log
);
mysql_mutex_lock
(
&
LOCK_index
);
/* Save variables so that we can reopen the log */
save_name
=
name
;
name
=
0
;
// Protect against free
...
...
sql/mysqld.cc
View file @
3c87e6f5
...
...
@@ -2070,6 +2070,12 @@ void unlink_thd(THD *thd)
thd_cleanup
(
thd
);
dec_connection_count
();
mysql_mutex_lock
(
&
LOCK_thread_count
);
/*
Used by binlog_reset_master. It would be cleaner to use
DEBUG_SYNC here, but that's not possible because the THD's debug
sync feature has been shut down at this point.
*/
DBUG_EXECUTE_IF
(
"sleep_after_lock_thread_count_before_delete_thd"
,
sleep
(
5
););
delete_thd
(
thd
);
DBUG_VOID_RETURN
;
}
...
...
sql/sql_acl.cc
View file @
3c87e6f5
...
...
@@ -8527,14 +8527,14 @@ static ulong parse_client_handshake_packet(MPVIO_EXT *mpvio,
DBUG_PRINT
(
"info"
,
(
"client capabilities: %lu"
,
mpvio
->
client_capabilities
));
if
(
mpvio
->
client_capabilities
&
CLIENT_SSL
)
{
char
error_string
[
1024
]
__attribute__
((
unused
))
;
unsigned
long
errptr
;
/* Do the SSL layering. */
if
(
!
ssl_acceptor_fd
)
return
packet_error
;
DBUG_PRINT
(
"info"
,
(
"IO layer change in progress..."
));
if
(
sslaccept
(
ssl_acceptor_fd
,
net
->
vio
,
net
->
read_timeout
))
if
(
sslaccept
(
ssl_acceptor_fd
,
net
->
vio
,
net
->
read_timeout
,
&
errptr
))
{
DBUG_PRINT
(
"error"
,
(
"Failed to accept new SSL connection"
));
return
packet_error
;
...
...
sql/sql_parse.cc
View file @
3c87e6f5
...
...
@@ -1748,6 +1748,67 @@ bool sp_process_definer(THD *thd)
}
/**
Auxiliary call that opens and locks tables for LOCK TABLES statement
and initializes the list of locked tables.
@param thd Thread context.
@param tables List of tables to be locked.
@return FALSE in case of success, TRUE in case of error.
*/
static
bool
lock_tables_open_and_lock_tables
(
THD
*
thd
,
TABLE_LIST
*
tables
)
{
Lock_tables_prelocking_strategy
lock_tables_prelocking_strategy
;
uint
counter
;
TABLE_LIST
*
table
;
thd
->
in_lock_tables
=
1
;
if
(
open_tables
(
thd
,
&
tables
,
&
counter
,
0
,
&
lock_tables_prelocking_strategy
))
goto
err
;
/*
We allow to change temporary tables even if they were locked for read
by LOCK TABLES. To avoid a discrepancy between lock acquired at LOCK
TABLES time and by the statement which is later executed under LOCK TABLES
we ensure that for temporary tables we always request a write lock (such
discrepancy can cause problems for the storage engine).
We don't set TABLE_LIST::lock_type in this case as this might result in
extra warnings from THD::decide_logging_format() even though binary logging
is totally irrelevant for LOCK TABLES.
*/
for
(
table
=
tables
;
table
;
table
=
table
->
next_global
)
if
(
!
table
->
placeholder
()
&&
table
->
table
->
s
->
tmp_table
)
table
->
table
->
reginfo
.
lock_type
=
TL_WRITE
;
if
(
lock_tables
(
thd
,
tables
,
counter
,
0
)
||
thd
->
locked_tables_list
.
init_locked_tables
(
thd
))
goto
err
;
thd
->
in_lock_tables
=
0
;
return
FALSE
;
err:
thd
->
in_lock_tables
=
0
;
trans_rollback_stmt
(
thd
);
/*
Need to end the current transaction, so the storage engine (InnoDB)
can free its locks if LOCK TABLES locked some tables before finding
that it can't lock a table in its list
*/
trans_commit_implicit
(
thd
);
/* Close tables and release metadata locks. */
close_thread_tables
(
thd
);
DBUG_ASSERT
(
!
thd
->
locked_tables_mode
);
thd
->
mdl_context
.
release_transactional_locks
();
return
TRUE
;
}
/**
Execute command saved in thd and lex->sql_command.
...
...
@@ -3093,31 +3154,11 @@ case SQLCOM_PREPARE:
goto
error
;
thd
->
variables
.
option_bits
|=
OPTION_TABLE_LOCK
;
thd
->
in_lock_tables
=
1
;
{
Lock_tables_prelocking_strategy
lock_tables_prelocking_strategy
;
res
=
(
open_and_lock_tables
(
thd
,
all_tables
,
FALSE
,
0
,
&
lock_tables_prelocking_strategy
)
||
thd
->
locked_tables_list
.
init_locked_tables
(
thd
));
}
thd
->
in_lock_tables
=
0
;
res
=
lock_tables_open_and_lock_tables
(
thd
,
all_tables
);
if
(
res
)
{
trans_rollback_stmt
(
thd
);
/*
Need to end the current transaction, so the storage engine (InnoDB)
can free its locks if LOCK TABLES locked some tables before finding
that it can't lock a table in its list
*/
trans_commit_implicit
(
thd
);
/* Close tables and release metadata locks. */
close_thread_tables
(
thd
);
DBUG_ASSERT
(
!
thd
->
locked_tables_mode
);
thd
->
mdl_context
.
release_transactional_locks
();
thd
->
variables
.
option_bits
&=
~
(
OPTION_TABLE_LOCK
);
}
else
...
...
vio/test-ssl.c
View file @
3c87e6f5
...
...
@@ -59,6 +59,9 @@ main(int argc, char** argv)
struct
st_VioSSLFd
*
ssl_acceptor
=
0
;
struct
st_VioSSLFd
*
ssl_connector
=
0
;
Vio
*
client_vio
=
0
,
*
server_vio
=
0
;
enum
enum_ssl_init_error
ssl_init_error
;
unsigned
long
ssl_error
;
MY_INIT
(
argv
[
0
]);
DBUG_PROCESS
(
argv
[
0
]);
DBUG_PUSH
(
default_dbug_option
);
...
...
@@ -91,16 +94,16 @@ main(int argc, char** argv)
ssl_acceptor
=
new_VioSSLAcceptorFd
(
server_key
,
server_cert
,
ca_file
,
ca_path
,
cipher
);
ssl_connector
=
new_VioSSLConnectorFd
(
client_key
,
client_cert
,
ca_file
,
ca_path
,
cipher
);
ca_path
,
cipher
,
&
ssl_init_error
);
client_vio
=
(
struct
st_vio
*
)
my_malloc
(
sizeof
(
struct
st_vio
),
MYF
(
0
));
client_vio
->
sd
=
sv
[
0
];
client_vio
->
vioblocking
(
client_vio
,
0
,
&
unused
);
sslconnect
(
ssl_connector
,
client_vio
,
60L
);
sslconnect
(
ssl_connector
,
client_vio
,
60L
,
&
ssl_error
);
server_vio
=
(
struct
st_vio
*
)
my_malloc
(
sizeof
(
struct
st_vio
),
MYF
(
0
));
server_vio
->
sd
=
sv
[
1
];
server_vio
->
vioblocking
(
client_vio
,
0
,
&
unused
);
sslaccept
(
ssl_acceptor
,
server_vio
,
60L
);
sslaccept
(
ssl_acceptor
,
server_vio
,
60L
,
&
ssl_error
);
printf
(
"Socketpair: %d , %d
\n
"
,
client_vio
->
sd
,
server_vio
->
sd
);
...
...
vio/test-sslclient.c
View file @
3c87e6f5
...
...
@@ -50,6 +50,9 @@ main( int argc __attribute__((unused)),
Vio
*
client_vio
=
0
;
int
err
;
char
xbuf
[
100
]
=
"Ohohhhhoh1234"
;
enum
enum_ssl_init_error
ssl_init_error
;
unsigned
long
ssl_error
;
MY_INIT
(
argv
[
0
]);
DBUG_PROCESS
(
argv
[
0
]);
DBUG_PUSH
(
default_dbug_option
);
...
...
@@ -60,7 +63,8 @@ main( int argc __attribute__((unused)),
if
(
ca_path
!=
0
)
printf
(
"CApath : %s
\n
"
,
ca_path
);
ssl_connector
=
new_VioSSLConnectorFd
(
client_key
,
client_cert
,
ca_file
,
ca_path
,
cipher
);
ssl_connector
=
new_VioSSLConnectorFd
(
client_key
,
client_cert
,
ca_file
,
ca_path
,
cipher
,
&
ssl_init_error
);
if
(
!
ssl_connector
)
{
fatal_error
(
"client:new_VioSSLConnectorFd failed"
);
}
...
...
@@ -81,7 +85,7 @@ main( int argc __attribute__((unused)),
/* ----------------------------------------------- */
/* Now we have TCP conncetion. Start SSL negotiation. */
read
(
client_vio
->
sd
,
xbuf
,
sizeof
(
xbuf
));
sslconnect
(
ssl_connector
,
client_vio
,
60L
);
sslconnect
(
ssl_connector
,
client_vio
,
60L
,
&
ssl_error
);
err
=
vio_read
(
client_vio
,
xbuf
,
sizeof
(
xbuf
));
if
(
err
<=
0
)
{
my_free
(
ssl_connector
);
...
...
vio/test-sslserver.c
View file @
3c87e6f5
...
...
@@ -52,6 +52,7 @@ do_ssl_stuff( TH_ARGS* args)
const
char
*
s
=
"Huhuhuhuuu"
;
Vio
*
server_vio
;
int
err
;
unsigned
long
ssl_error
;
DBUG_ENTER
(
"do_ssl_stuff"
);
server_vio
=
vio_new
(
args
->
sd
,
VIO_TYPE_TCPIP
,
TRUE
);
...
...
@@ -60,7 +61,7 @@ do_ssl_stuff( TH_ARGS* args)
/* TCP connection is ready. Do server side SSL. */
err
=
write
(
server_vio
->
sd
,(
uchar
*
)
s
,
strlen
(
s
));
sslaccept
(
args
->
ssl_acceptor
,
server_vio
,
60L
);
sslaccept
(
args
->
ssl_acceptor
,
server_vio
,
60L
,
&
ssl_error
);
err
=
server_vio
->
write
(
server_vio
,(
uchar
*
)
s
,
strlen
(
s
));
DBUG_VOID_RETURN
;
}
...
...
vio/viossl.c
View file @
3c87e6f5
...
...
@@ -144,8 +144,9 @@ void vio_ssl_delete(Vio *vio)
static
int
ssl_do
(
struct
st_VioSSLFd
*
ptr
,
Vio
*
vio
,
long
timeout
,
int
(
*
connect_accept_func
)(
SSL
*
))
int
(
*
connect_accept_func
)(
SSL
*
)
,
unsigned
long
*
errptr
)
{
int
r
;
SSL
*
ssl
;
my_bool
unused
;
my_bool
was_blocking
;
...
...
@@ -160,7 +161,7 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout,
if
(
!
(
ssl
=
SSL_new
(
ptr
->
ssl_context
)))
{
DBUG_PRINT
(
"error"
,
(
"SSL_new failure"
));
report_errors
(
ssl
);
*
errptr
=
ERR_get_error
(
);
vio_blocking
(
vio
,
was_blocking
,
&
unused
);
DBUG_RETURN
(
1
);
}
...
...
@@ -169,10 +170,10 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout,
SSL_SESSION_set_timeout
(
SSL_get_session
(
ssl
),
timeout
);
SSL_set_fd
(
ssl
,
vio
->
sd
);
if
(
connect_accept_func
(
ssl
)
<
1
)
if
(
(
r
=
connect_accept_func
(
ssl
)
)
<
1
)
{
DBUG_PRINT
(
"error"
,
(
"SSL_connect/accept failure"
));
report_errors
(
ssl
);
*
errptr
=
SSL_get_error
(
ssl
,
r
);
SSL_free
(
ssl
);
vio_blocking
(
vio
,
was_blocking
,
&
unused
);
DBUG_RETURN
(
1
);
...
...
@@ -220,17 +221,17 @@ static int ssl_do(struct st_VioSSLFd *ptr, Vio *vio, long timeout,
}
int
sslaccept
(
struct
st_VioSSLFd
*
ptr
,
Vio
*
vio
,
long
timeout
)
int
sslaccept
(
struct
st_VioSSLFd
*
ptr
,
Vio
*
vio
,
long
timeout
,
unsigned
long
*
errptr
)
{
DBUG_ENTER
(
"sslaccept"
);
DBUG_RETURN
(
ssl_do
(
ptr
,
vio
,
timeout
,
SSL_accept
));
DBUG_RETURN
(
ssl_do
(
ptr
,
vio
,
timeout
,
SSL_accept
,
errptr
));
}
int
sslconnect
(
struct
st_VioSSLFd
*
ptr
,
Vio
*
vio
,
long
timeout
)
int
sslconnect
(
struct
st_VioSSLFd
*
ptr
,
Vio
*
vio
,
long
timeout
,
unsigned
long
*
errptr
)
{
DBUG_ENTER
(
"sslconnect"
);
DBUG_RETURN
(
ssl_do
(
ptr
,
vio
,
timeout
,
SSL_connect
));
DBUG_RETURN
(
ssl_do
(
ptr
,
vio
,
timeout
,
SSL_connect
,
errptr
));
}
...
...
vio/viosslfactories.c
View file @
3c87e6f5
...
...
@@ -165,7 +165,7 @@ static struct st_VioSSLFd *
new_VioSSLFd
(
const
char
*
key_file
,
const
char
*
cert_file
,
const
char
*
ca_file
,
const
char
*
ca_path
,
const
char
*
cipher
,
SSL_METHOD
*
method
,
enum
enum_ssl_init_error
*
error
)
enum
enum_ssl_init_error
*
error
)
{
DH
*
dh
;
struct
st_VioSSLFd
*
ssl_fd
;
...
...
@@ -249,11 +249,10 @@ new_VioSSLFd(const char *key_file, const char *cert_file,
struct
st_VioSSLFd
*
new_VioSSLConnectorFd
(
const
char
*
key_file
,
const
char
*
cert_file
,
const
char
*
ca_file
,
const
char
*
ca_path
,
const
char
*
cipher
)
const
char
*
cipher
,
enum
enum_ssl_init_error
*
error
)
{
struct
st_VioSSLFd
*
ssl_fd
;
int
verify
=
SSL_VERIFY_PEER
;
enum
enum_ssl_init_error
dummy
;
/*
Turn off verification of servers certificate if both
...
...
@@ -263,7 +262,7 @@ new_VioSSLConnectorFd(const char *key_file, const char *cert_file,
verify
=
SSL_VERIFY_NONE
;
if
(
!
(
ssl_fd
=
new_VioSSLFd
(
key_file
,
cert_file
,
ca_file
,
ca_path
,
cipher
,
TLSv1_client_method
(),
&
dummy
)))
ca_path
,
cipher
,
TLSv1_client_method
(),
error
)))
{
return
0
;
}
...
...
vio/viotest-ssl.c
View file @
3c87e6f5
...
...
@@ -60,6 +60,9 @@ int main(int argc, char **argv)
struct
st_VioSSLConnectorFd
*
ssl_connector
=
0
;
Vio
*
client_vio
=
0
;
Vio
*
server_vio
=
0
;
enum
enum_ssl_init_error
ssl_init_error
;
unsigned
long
ssl_error
;
MY_INIT
(
argv
[
0
]);
DBUG_PROCESS
(
argv
[
0
]);
DBUG_PUSH
(
default_dbug_option
);
...
...
@@ -92,14 +95,14 @@ int main(int argc, char **argv)
ssl_acceptor
=
new_VioSSLAcceptorFd
(
server_key
,
server_cert
,
ca_file
,
ca_path
);
ssl_connector
=
new_VioSSLConnectorFd
(
client_key
,
client_cert
,
ca_file
,
ca_path
);
ca_path
,
&
ssl_init_error
);
client_vio
=
(
Vio
*
)
my_malloc
(
sizeof
(
struct
st_vio
),
MYF
(
0
));
client_vio
->
sd
=
sv
[
0
];
sslconnect
(
ssl_connector
,
client_vio
);
sslconnect
(
ssl_connector
,
client_vio
,
&
ssl_error
);
server_vio
=
(
Vio
*
)
my_malloc
(
sizeof
(
struct
st_vio
),
MYF
(
0
));
server_vio
->
sd
=
sv
[
1
];
sslaccept
(
ssl_acceptor
,
server_vio
);
sslaccept
(
ssl_acceptor
,
server_vio
,
&
ssl_error
);
printf
(
"Socketpair: %d , %d
\n
"
,
client_vio
->
sd
,
server_vio
->
sd
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment