File tree Expand file tree Collapse file tree 3 files changed +23
-7
lines changed Expand file tree Collapse file tree 3 files changed +23
-7
lines changed Original file line number Diff line number Diff line change @@ -77,8 +77,8 @@ my_bool Keys_container::store_key_in_hash(IKey *key)
7777
7878my_bool Keys_container::store_key (IKeyring_io* keyring_io, IKey* key)
7979{
80- keyring_io->open (&keyring_storage_url);
81- if ( flush_to_backup (keyring_io) || store_key_in_hash (key))
80+ if ( keyring_io->open (&keyring_storage_url) || flush_to_backup (keyring_io) ||
81+ store_key_in_hash (key))
8282 return TRUE ;// keyring_io destructor will take care of removing the backup(if exists)
8383 if (flush_to_keyring (keyring_io, key, STORE_KEY) || keyring_io->close ())
8484 {
@@ -127,9 +127,8 @@ my_bool Keys_container::remove_key_from_hash(IKey *key)
127127
128128my_bool Keys_container::remove_key (IKeyring_io *keyring_io, IKey *key)
129129{
130- keyring_io->open (&keyring_storage_url);
131130 IKey* fetched_key_to_delete= get_key_from_hash (key);
132- if (fetched_key_to_delete == NULL )
131+ if (fetched_key_to_delete == NULL || keyring_io-> open (&keyring_storage_url) )
133132 return TRUE ;
134133 if (flush_to_backup (keyring_io) || remove_key_from_hash (fetched_key_to_delete))
135134 return TRUE ;// keyring_io destructor will take care of removing the backup(if exists)
Original file line number Diff line number Diff line change @@ -8683,14 +8683,14 @@ Encryption::create_master_key(byte** master_key)
86838683 reinterpret_cast <void **>(master_key),
86848684 &key_len);
86858685
8686- if (ret) {
8686+ if (ret || *master_key == NULL ) {
86878687 ib::error () << " Encryption can't find master key, please check"
86888688 " the keyring plugin is loaded." ;
86898689 *master_key = NULL ;
8690+ } else {
8691+ master_key_id++;
86908692 }
86918693
8692- master_key_id++;
8693-
86948694 if (key_type) {
86958695 my_free (key_type);
86968696 }
Original file line number Diff line number Diff line change @@ -894,6 +894,23 @@ namespace keyring__keys_container_unittest
894894 delete sample_key;
895895 }
896896
897+ TEST_F (Keys_container_with_mocked_io_test, ErrorFromIOFlushWhileOpenningIOForKeyStore)
898+ {
899+ keyring_io= new Mock_keyring_io ();
900+ ILogger *logger= new Mock_logger ();
901+ keys_container= new Keys_container (logger);
902+ expect_calls_on_init ();
903+ EXPECT_EQ (keys_container->init (keyring_io, file_name), 0 );
904+
905+ EXPECT_CALL (*keyring_io, open (Pointee (StrEq (file_name)))).WillOnce (Return (1 ));
906+
907+ EXPECT_EQ (keys_container->store_key (keyring_io, sample_key), 1 );
908+ ASSERT_TRUE (keys_container->get_number_of_keys () == 0 );
909+ delete logger;
910+ delete keyring_io;
911+ delete sample_key;
912+ }
913+
897914 int main (int argc, char **argv) {
898915 if (mysql_rwlock_init (key_LOCK_keyring, &LOCK_keyring))
899916 return TRUE ;
You can’t perform that action at this time.
0 commit comments