1
0
mirror of https://github.com/MariaDB/server.git synced 2025-08-08 11:22:35 +03:00

MDEV-9011: Redo log encryption does not work

Redo log encryption used too short buffer when getting
encryption keys.
This commit is contained in:
Jan Lindström
2015-10-30 13:12:30 +02:00
parent 3e98383787
commit 81d35841bd
6 changed files with 195 additions and 16 deletions

View File

@@ -0,0 +1,55 @@
SET GLOBAL innodb_file_format = `Barracuda`;
SET GLOBAL innodb_file_per_table = ON;
create table t1(c1 bigint not null, b char(200), c varchar(200)) engine=innodb encrypted=yes encryption_key_id=1;
show warnings;
Level Code Message
create procedure innodb_insert_proc (repeat_count int)
begin
declare current_num int;
set current_num = 0;
while current_num < repeat_count do
insert into t1 values(current_num, substring(MD5(RAND()), -64), REPEAT('secredsecredsecred',10));
set current_num = current_num + 1;
end while;
end//
commit;
set autocommit=0;
call innodb_insert_proc(2000);
commit;
set autocommit=1;
update t1 set c1 = c1 +1;
select count(*) from t1;
count(*)
2000
# ibdata1 yes on expecting NOT FOUND
NOT FOUND /secredsecred/ in ibdata1
# t1 yes on expecting NOT FOUND
NOT FOUND /secredsecred/ in t1.ibd
# log0 yes on expecting NOT FOUND
NOT FOUND /secredsecred/ in ib_logfile0
# log1 yes on expecting NOT FOUND
NOT FOUND /secredsecred/ in ib_logfile1
# Restart mysqld --innodb_encrypt_log=0
insert into t1 values(5000, substring(MD5(RAND()), -64), REPEAT('notsecred',10));
insert into t1 values(5001, substring(MD5(RAND()), -64), REPEAT('notsecred',10));
insert into t1 values(5002, substring(MD5(RAND()), -64), REPEAT('notsecred',10));
insert into t1 values(5003, substring(MD5(RAND()), -64), REPEAT('notsecred',10));
insert into t1 values(5004, substring(MD5(RAND()), -64), REPEAT('notsecred',10));
# ibdata1 yes on expecting NOT FOUND
NOT FOUND /secredsecred/ in ibdata1
# t1 yes on expecting NOT FOUND
NOT FOUND /secredsecred/ in t1.ibd
# log0 yes on expecting NOT FOUND
NOT FOUND /secredsecred/ in ib_logfile0
# log1 yes on expecting NOT FOUND
NOT FOUND /secredsecred/ in ib_logfile1
# ibdata1 yes on expecting NOT FOUND
NOT FOUND /notsecred/ in ibdata1
# t1 yes on expecting NOT FOUND
NOT FOUND /notsecred/ in t1.ibd
# log0 no on expecting FOUND/NOTFOUND depending where insert goes
FOUND /notsecred/ in ib_logfile0
# log1 no on expecting FOUND/NOTFOUND depending where insert goes
NOT FOUND /notsecred/ in ib_logfile1
drop procedure innodb_insert_proc;
drop table t1;