mirror of
https://github.com/MariaDB/server.git
synced 2025-10-12 12:25:37 +03:00
Merge mysql.com:/home/bkroot/mysql-4.1
into mysql.com:/home/bk/mysql-5.0
This commit is contained in:
@@ -830,7 +830,7 @@ typedef off_t os_off_t;
|
||||
#define socket_errno WSAGetLastError()
|
||||
#define SOCKET_EINTR WSAEINTR
|
||||
#define SOCKET_EAGAIN WSAEINPROGRESS
|
||||
#define SOCKET_EWOULDBLOCK WSAEINPROGRESS
|
||||
#define SOCKET_EWOULDBLOCK WSAEWOULDBLOCK
|
||||
#define SOCKET_ENFILE ENFILE
|
||||
#define SOCKET_EMFILE EMFILE
|
||||
#elif defined(OS2)
|
||||
|
3
mysql-test/r/func_des_encrypt.result
Normal file
3
mysql-test/r/func_des_encrypt.result
Normal file
@@ -0,0 +1,3 @@
|
||||
select des_encrypt('hello');
|
||||
des_encrypt('hello')
|
||||
<EFBFBD><EFBFBD>2nV<6E><56>}
|
9
mysql-test/t/func_des_encrypt.test
Normal file
9
mysql-test/t/func_des_encrypt.test
Normal file
@@ -0,0 +1,9 @@
|
||||
-- source include/have_openssl.inc
|
||||
|
||||
# This test can't be in func_encrypt.test, because it requires
|
||||
# --des-key-file to not be set.
|
||||
|
||||
#
|
||||
# Bug #11643: des_encrypt() causes server to die
|
||||
#
|
||||
select des_encrypt('hello');
|
@@ -22,7 +22,17 @@
|
||||
struct st_des_keyschedule des_keyschedule[10];
|
||||
uint des_default_key;
|
||||
pthread_mutex_t LOCK_des_key_file;
|
||||
static int initialized;
|
||||
static int initialized= 0;
|
||||
|
||||
void
|
||||
init_des_key_file()
|
||||
{
|
||||
if (!initialized)
|
||||
{
|
||||
initialized=1;
|
||||
pthread_mutex_init(&LOCK_des_key_file,MY_MUTEX_INIT_FAST);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Function which loads DES keys from plaintext file into memory on MySQL
|
||||
@@ -45,11 +55,7 @@ load_des_key_file(const char *file_name)
|
||||
DBUG_ENTER("load_des_key_file");
|
||||
DBUG_PRINT("enter",("name: %s",file_name));
|
||||
|
||||
if (!initialized)
|
||||
{
|
||||
initialized=1;
|
||||
pthread_mutex_init(&LOCK_des_key_file,MY_MUTEX_INIT_FAST);
|
||||
}
|
||||
init_des_key_file();
|
||||
|
||||
VOID(pthread_mutex_lock(&LOCK_des_key_file));
|
||||
if ((file=my_open(file_name,O_RDONLY | O_BINARY ,MYF(MY_WME))) < 0 ||
|
||||
|
@@ -378,6 +378,9 @@ String *Item_func_des_encrypt::val_str(String *str)
|
||||
|
||||
if (arg_count == 1)
|
||||
{
|
||||
/* Make sure LOCK_des_key_file was initialized. */
|
||||
init_des_key_file();
|
||||
|
||||
/* Protect against someone doing FLUSH DES_KEY_FILE */
|
||||
VOID(pthread_mutex_lock(&LOCK_des_key_file));
|
||||
keyschedule= des_keyschedule[key_number=des_default_key];
|
||||
@@ -388,6 +391,10 @@ String *Item_func_des_encrypt::val_str(String *str)
|
||||
key_number= (uint) args[1]->val_int();
|
||||
if (key_number > 9)
|
||||
goto error;
|
||||
|
||||
/* Make sure LOCK_des_key_file was initialized. */
|
||||
init_des_key_file();
|
||||
|
||||
VOID(pthread_mutex_lock(&LOCK_des_key_file));
|
||||
keyschedule= des_keyschedule[key_number];
|
||||
VOID(pthread_mutex_unlock(&LOCK_des_key_file));
|
||||
@@ -474,6 +481,10 @@ String *Item_func_des_decrypt::val_str(String *str)
|
||||
// Check if automatic key and that we have privilege to uncompress using it
|
||||
if (!(current_thd->master_access & SUPER_ACL) || key_number > 9)
|
||||
goto error;
|
||||
|
||||
/* Make sure LOCK_des_key_file was initialized. */
|
||||
init_des_key_file();
|
||||
|
||||
VOID(pthread_mutex_lock(&LOCK_des_key_file));
|
||||
keyschedule= des_keyschedule[key_number];
|
||||
VOID(pthread_mutex_unlock(&LOCK_des_key_file));
|
||||
|
@@ -1154,6 +1154,9 @@ int MYSQL_LOG::purge_logs(const char *to_log,
|
||||
*/
|
||||
if (my_stat(log_info.log_file_name,&s,MYF(0)))
|
||||
file_size= s.st_size;
|
||||
else
|
||||
sql_print_information("Failed to execute my_stat on file '%s'",
|
||||
log_info.log_file_name);
|
||||
}
|
||||
/*
|
||||
It's not fatal if we can't delete a log file ;
|
||||
|
@@ -786,6 +786,7 @@ extern char *des_key_file;
|
||||
extern struct st_des_keyschedule des_keyschedule[10];
|
||||
extern uint des_default_key;
|
||||
extern pthread_mutex_t LOCK_des_key_file;
|
||||
void init_des_key_file();
|
||||
bool load_des_key_file(const char *file_name);
|
||||
void free_des_key_file();
|
||||
#endif /* HAVE_OPENSSL */
|
||||
|
@@ -135,7 +135,7 @@ my_bool my_net_init(NET *net, Vio* vio)
|
||||
if (vio != 0) /* If real connection */
|
||||
{
|
||||
net->fd = vio_fd(vio); /* For perl DBI/DBD */
|
||||
#if defined(MYSQL_SERVER) && !defined(___WIN__) && !defined(__EMX__) && !defined(OS2)
|
||||
#if defined(MYSQL_SERVER) && !defined(__WIN__) && !defined(__EMX__) && !defined(OS2)
|
||||
if (!(test_flags & TEST_BLOCKING))
|
||||
{
|
||||
my_bool old_mode;
|
||||
|
@@ -4968,6 +4968,7 @@ void rotate_relay_log(MASTER_INFO* mi)
|
||||
|
||||
/* We don't lock rli->run_lock. This would lead to deadlocks. */
|
||||
pthread_mutex_lock(&mi->run_lock);
|
||||
pthread_mutex_lock(&mi->data_lock);
|
||||
|
||||
/*
|
||||
We need to test inited because otherwise, new_file() will attempt to lock
|
||||
@@ -4997,6 +4998,7 @@ void rotate_relay_log(MASTER_INFO* mi)
|
||||
*/
|
||||
rli->relay_log.harvest_bytes_written(&rli->log_space_total);
|
||||
end:
|
||||
pthread_mutex_unlock(&mi->data_lock);
|
||||
pthread_mutex_unlock(&mi->run_lock);
|
||||
DBUG_VOID_RETURN;
|
||||
}
|
||||
|
@@ -143,7 +143,7 @@ Vio *vio_new(my_socket sd, enum enum_vio_type type, uint flags)
|
||||
sprintf(vio->desc,
|
||||
(vio->type == VIO_TYPE_SOCKET ? "socket (%d)" : "TCP/IP (%d)"),
|
||||
vio->sd);
|
||||
#if !defined(___WIN__) && !defined(__EMX__) && !defined(OS2)
|
||||
#if !defined(__WIN__) && !defined(__EMX__) && !defined(OS2)
|
||||
#if !defined(NO_FCNTL_NONBLOCK)
|
||||
#if defined(__FreeBSD__)
|
||||
fcntl(sd, F_SETFL, vio->fcntl_mode); /* Yahoo! FreeBSD patch */
|
||||
@@ -158,7 +158,7 @@ Vio *vio_new(my_socket sd, enum enum_vio_type type, uint flags)
|
||||
{
|
||||
/* set to blocking mode by default */
|
||||
ulong arg=0, r;
|
||||
r = ioctlsocket(sd,FIONBIO,(void*) &arg, sizeof(arg));
|
||||
r = ioctlsocket(sd,FIONBIO,(void*) &arg);
|
||||
vio->fcntl_mode &= ~O_NONBLOCK;
|
||||
}
|
||||
#endif
|
||||
|
@@ -128,7 +128,7 @@ int vio_blocking(Vio * vio __attribute__((unused)), my_bool set_blocking_mode,
|
||||
DBUG_PRINT("enter", ("set_blocking_mode: %d old_mode: %d",
|
||||
(int) set_blocking_mode, (int) *old_mode));
|
||||
|
||||
#if !defined(___WIN__) && !defined(__EMX__)
|
||||
#if !defined(__WIN__) && !defined(__EMX__)
|
||||
#if !defined(NO_FCNTL_NONBLOCK)
|
||||
if (vio->sd >= 0)
|
||||
{
|
||||
@@ -161,7 +161,7 @@ int vio_blocking(Vio * vio __attribute__((unused)), my_bool set_blocking_mode,
|
||||
vio->fcntl_mode |= O_NONBLOCK; /* set bit */
|
||||
}
|
||||
if (old_fcntl != vio->fcntl_mode)
|
||||
r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg, sizeof(arg));
|
||||
r = ioctlsocket(vio->sd,FIONBIO,(void*) &arg);
|
||||
}
|
||||
#ifndef __EMX__
|
||||
else
|
||||
|
@@ -134,7 +134,7 @@ unsigned short FAR *work;
|
||||
left -= count[len];
|
||||
if (left < 0) return -1; /* over-subscribed */
|
||||
}
|
||||
if (left > 0 && (type == CODES || (codes - count[0] != 1)))
|
||||
if (left > 0 && (type == CODES || max != 1))
|
||||
return -1; /* incomplete set */
|
||||
|
||||
/* generate offsets into symbol table for each length for sorting */
|
||||
|
Reference in New Issue
Block a user