MDEV-12253 post-fix: Do not leak memory in crash recovery
This fixes the cmake -DWITH_ASAN test failure that was mentioned in commit f9cc391863ab962e8c8a8a8a676d730498eb8d6f (merging MDEV-12253 from 10.1 to 10.2). fil_parse_write_crypt_data(): If the tablespace is not found, invoke fil_space_destroy_crypt_data(&crypt_data) to properly free the created object. With this, the test encryption.innodb-redo-badkey still reports "Missing MLOG_FILE_NAME or MLOG_FILE_DELETE before MLOG_CHECKPOINT" but does not fail. The misleading message should be corrected, maybe as part of MDEV-12699.
This commit is contained in:
parent
56b3bcc812
commit
2645bda5f2
@ -502,16 +502,16 @@ fil_parse_write_crypt_data(
|
|||||||
ptr += len;
|
ptr += len;
|
||||||
|
|
||||||
/* update fil_space memory cache with crypt_data */
|
/* update fil_space memory cache with crypt_data */
|
||||||
fil_space_t* space = fil_space_acquire_silent(space_id);
|
if (fil_space_t* space = fil_space_acquire_silent(space_id)) {
|
||||||
|
|
||||||
if (space) {
|
|
||||||
crypt_data = fil_space_set_crypt_data(space, crypt_data);
|
crypt_data = fil_space_set_crypt_data(space, crypt_data);
|
||||||
fil_space_release(space);
|
fil_space_release(space);
|
||||||
}
|
/* Check is used key found from encryption plugin */
|
||||||
|
if (crypt_data->should_encrypt()
|
||||||
/* Check is used key found from encryption plugin */
|
&& !crypt_data->is_key_found()) {
|
||||||
if (crypt_data->should_encrypt() && !crypt_data->is_key_found()) {
|
*err = DB_DECRYPTION_FAILED;
|
||||||
*err = DB_DECRYPTION_FAILED;
|
}
|
||||||
|
} else {
|
||||||
|
fil_space_destroy_crypt_data(&crypt_data);
|
||||||
}
|
}
|
||||||
|
|
||||||
return ptr;
|
return ptr;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user