diff --git a/src/access/pg_tde_tdemap.c b/src/access/pg_tde_tdemap.c index b7cc1409..7563f88c 100644 --- a/src/access/pg_tde_tdemap.c +++ b/src/access/pg_tde_tdemap.c @@ -124,7 +124,7 @@ pg_tde_write_key_fork(const RelFileLocator *rlocator, InternalKey *key, const ch * the cache as well */ data = (RelKeysData *) MemoryContextAlloc(TopMemoryContext, SizeOfRelKeysData(1)); - strcpy(data->master_key_name, MasterKeyName); + strncpy(data->master_key_name, master_key_info->name.name, MASTER_KEY_NAME_LEN); data->internal_key[0] = *key; data->internal_keys_len = 1; @@ -217,11 +217,9 @@ pg_tde_get_keys_from_fork(const RelFileLocator *rlocator) // TODO: use proper iv stored in the file! unsigned char iv[INTERNAL_KEY_LEN] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - master_key_info = keyringGetLatestKey(keys->master_key_name); - if(master_key_info == NULL) - { - master_key_info = keyringGenerateKey(keys->master_key_name, INTERNAL_KEY_LEN); - } + keyName master_key_name; + strncpy(master_key_name.name, keys->master_key_name, MASTER_KEY_NAME_LEN); + master_key_info = keyringGetKey(master_key_name); if(master_key_info == NULL) { ereport(ERROR, @@ -414,4 +412,4 @@ pg_tde_xlog_create_fork(XLogReaderState *record) #endif pg_tde_write_key_fork(&rlocator, &int_key, MasterKeyName); -} \ No newline at end of file +}