Fix sanitizer issues in wal_archiving

pull/238/head
Andrew Pogrebnoy 1 month ago committed by Andrew Pogrebnoi
parent 11fa1e393e
commit dc7c67e6b4
  1. 4
      ci_scripts/suppressions/lsan.supp
  2. 6
      contrib/pg_tde/src/access/pg_tde_tdemap.c
  3. 8
      contrib/pg_tde/src/bin/pg_tde_archive_decrypt.c
  4. 8
      contrib/pg_tde/src/bin/pg_tde_restore_encrypt.c

@ -55,3 +55,7 @@ leak:dumpDumpableObject
#pg_rewind
leak:decide_file_actions
leak:GenerateRecoveryConfig
# Returns strdup'd string which never gets freed in frontend tools. Trying to
# free it leads to comiler complains that it discards 'const' qualifier.
leak:get_progname

@ -1018,6 +1018,9 @@ pg_tde_read_last_wal_key(void)
/* No keys */
if (fsize == TDE_FILE_HEADER_SIZE)
{
#ifdef FRONTEND
pfree(principal_key);
#endif
LWLockRelease(lock_pk);
CloseTransientFile(fd);
return NULL;
@ -1027,6 +1030,9 @@ pg_tde_read_last_wal_key(void)
pg_tde_read_one_map_entry2(fd, file_idx, &map_entry, rlocator.dbOid);
rel_key_data = tde_decrypt_rel_key(principal_key, &map_entry);
#ifdef FRONTEND
pfree(principal_key);
#endif
LWLockRelease(lock_pk);
CloseTransientFile(fd);

@ -208,7 +208,13 @@ main(int argc, char *argv[])
if (r != child)
pg_fatal("child %d died, expected %d", (int) r, (int) child);
if (status != 0)
pg_fatal("%s", wait_result_to_str(status));
{
char *reason = wait_result_to_str(status);
pg_fatal("%s", reason);
/* keep lsan happy */
free(reason);
}
if (issegment)
{

@ -202,7 +202,13 @@ main(int argc, char *argv[])
if (r != child)
pg_fatal("child %d died, expected %d", (int) r, (int) child);
if (status != 0)
pg_fatal("%s", wait_result_to_str(status));
{
char *reason = wait_result_to_str(status);
pg_fatal("%s", reason);
/* keep lsan happy */
free(reason);
}
if (issegment)
{

Loading…
Cancel
Save