Skip to content

Commit affead6

Browse files
Bug#22522079: CRASH WHEN SETTING KEYRING_FILE_DATA=NULL
Issue : A NULL string for keyring_file_data was not handled properly Solution : Added required check.
1 parent da86cdb commit affead6

File tree

5 files changed

+7
-1
lines changed

5 files changed

+7
-1
lines changed

mysql-test/suite/auth_sec/r/key_rotation_qa.result

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ call mtr.add_suppression("\\[Error\\] InnoDB: Encryption can't find master key,
22
call mtr.add_suppression("\\[Error\\] Plugin keyring_file reported: 'keyring_file initialization failure.");
33
call mtr.add_suppression("\\[Error\\] Function 'keyring_file' already exists");
44
call mtr.add_suppression("\\[Error\\] Couldn't load plugin named 'keyring_file' with soname 'keyring_file.so'.");
5+
call mtr.add_suppression("\\[ERROR\\] Couldn't load plugin named 'keyring_file' with soname 'keyring_file.dll'.");
56
call mtr.add_suppression("\\[Error\\] InnoDB: Can't generate new master key, please check the keyring plugin is loaded.");
67
call mtr.add_suppression("\\[Error\\] InnoDB: Encryption information in datafile");
78
call mtr.add_suppression("\\[Error\\] InnoDB: Operating system error number 2 in a file operation.");

mysql-test/suite/auth_sec/r/keyring_file_data.result

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@ SELECT @@global.keyring_file_data;
99
MYSQL_TMP_DIR/new_keyring_file_data
1010
SET @@global.keyring_file_data= '../../../../../bad_dir/bad_keyring_file_data/';
1111
ERROR 42000: Variable 'keyring_file_data' can't be set to the value of '../../../../../bad_dir/bad_keyring_file_data/'
12+
SET @@global.keyring_file_data=NULL;
13+
ERROR 42000: Variable 'keyring_file_data' can't be set to the value of 'NULL'
1214
SELECT @@global.keyring_file_data;
1315
@@global.keyring_file_data
1416
MYSQL_TMP_DIR/new_keyring_file_data

mysql-test/suite/auth_sec/t/key_rotation_qa.test

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ call mtr.add_suppression("\\[Error\\] InnoDB: Encryption can't find master key,
1010
call mtr.add_suppression("\\[Error\\] Plugin keyring_file reported: 'keyring_file initialization failure.");
1111
call mtr.add_suppression("\\[Error\\] Function 'keyring_file' already exists");
1212
call mtr.add_suppression("\\[Error\\] Couldn't load plugin named 'keyring_file' with soname 'keyring_file.so'.");
13+
call mtr.add_suppression("\\[ERROR\\] Couldn't load plugin named 'keyring_file' with soname 'keyring_file.dll'.");
1314
call mtr.add_suppression("\\[Error\\] InnoDB: Can't generate new master key, please check the keyring plugin is loaded.");
1415
call mtr.add_suppression("\\[Error\\] InnoDB: Encryption information in datafile");
1516
call mtr.add_suppression("\\[Error\\] InnoDB: Operating system error number 2 in a file operation.");

mysql-test/suite/auth_sec/t/keyring_file_data.test

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,8 @@ eval SET @@global.keyring_file_data= '$MYSQL_TMP_DIR/new_keyring_file_data';
1313
SELECT @@global.keyring_file_data;
1414
--Error ER_WRONG_VALUE_FOR_VAR
1515
SET @@global.keyring_file_data= '../../../../../bad_dir/bad_keyring_file_data/';
16+
--Error ER_WRONG_VALUE_FOR_VAR
17+
SET @@global.keyring_file_data=NULL;
1618
--replace_result $MYSQL_TMP_DIR MYSQL_TMP_DIR
1719
SELECT @@global.keyring_file_data;
1820

plugin/keyring/keyring_impl.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ my_bool init_keyring_locks()
6262

6363
my_bool create_keyring_dir_if_does_not_exist(const char *keyring_file_path)
6464
{
65-
if (strlen(keyring_file_path) == 0)
65+
if (!keyring_file_path || strlen(keyring_file_path) == 0)
6666
return TRUE;
6767
char keyring_dir[FN_REFLEN];
6868
size_t keyring_dir_length;

0 commit comments

Comments
 (0)