mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
MDEV-25343 add read secret size in file key plugin
This commit is contained in:
@ -0,0 +1,10 @@
|
|||||||
|
call mtr.add_suppression("the secret file has incorrect length");
|
||||||
|
call mtr.add_suppression("Plugin 'file_key_management' init function returned error");
|
||||||
|
call mtr.add_suppression("Plugin 'file_key_management' registration.*failed");
|
||||||
|
FOUND 1 /the secret file has incorrect length/ in mysqld.1.err
|
||||||
|
create table t1(c1 bigint not null, b char(200)) engine=innodb encrypted=yes encryption_key_id=1;
|
||||||
|
ERROR HY000: Can't create table `test`.`t1` (errno: 140 "Wrong create options")
|
||||||
|
select plugin_status from information_schema.plugins
|
||||||
|
where plugin_name = 'file_key_management';
|
||||||
|
plugin_status
|
||||||
|
# Test checks if opening an too large secret does not crash the server.
|
4
mysql-test/suite/encryption/t/filekeys-data-too-long.key
Normal file
4
mysql-test/suite/encryption/t/filekeys-data-too-long.key
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
secretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecret
|
||||||
|
secretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecret
|
||||||
|
secretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecretsecret
|
||||||
|
|
@ -0,0 +1,3 @@
|
|||||||
|
--loose-file-key-management-filekey=FILE:$MTR_SUITE_DIR/t/filekeys-data-too-long.key
|
||||||
|
--loose-file-key-management-filename=$MTR_SUITE_DIR/t/filekeys-data.enc
|
||||||
|
|
@ -0,0 +1,4 @@
|
|||||||
|
let SEARCH_PATTERN=the secret file has incorrect length;
|
||||||
|
source filekeys_badtest.inc;
|
||||||
|
|
||||||
|
--echo # Test checks if opening an too large secret does not crash the server.
|
@ -174,13 +174,24 @@ bool Parser::read_filekey(const char *filekey, char *secret)
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
int len= read(f, secret, MAX_SECRET_SIZE);
|
int len= read(f, secret, MAX_SECRET_SIZE + 1);
|
||||||
if (len <= 0)
|
if (len <= 0)
|
||||||
{
|
{
|
||||||
my_error(EE_READ,ME_ERROR_LOG, filekey, errno);
|
my_error(EE_READ,ME_ERROR_LOG, filekey, errno);
|
||||||
close(f);
|
close(f);
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (len > MAX_SECRET_SIZE)
|
||||||
|
{
|
||||||
|
my_printf_error(EE_READ,
|
||||||
|
"Cannot decrypt %s, the secret file has incorrect length, "
|
||||||
|
"max secret size is %dB ",
|
||||||
|
ME_ERROR_LOG, filekey, MAX_SECRET_SIZE);
|
||||||
|
close(f);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
close(f);
|
close(f);
|
||||||
while (secret[len - 1] == '\r' || secret[len - 1] == '\n') len--;
|
while (secret[len - 1] == '\r' || secret[len - 1] == '\n') len--;
|
||||||
secret[len]= '\0';
|
secret[len]= '\0';
|
||||||
|
Reference in New Issue
Block a user