diff --git a/src/backend/archive/shell_archive.c b/src/backend/archive/shell_archive.c index 0925348bfe..506c5a30ad 100644 --- a/src/backend/archive/shell_archive.c +++ b/src/backend/archive/shell_archive.c @@ -125,9 +125,11 @@ shell_archive_file(ArchiveModuleState *state, const char *file, errdetail("The failed archive command was: %s", xlogarchcmd))); } + pfree(xlogarchcmd); return false; } + pfree(xlogarchcmd); elog(DEBUG1, "archived write-ahead log file \"%s\"", file); return true; diff --git a/src/backend/libpq/be-secure-common.c b/src/backend/libpq/be-secure-common.c index 0582606192..0cb201acb1 100644 --- a/src/backend/libpq/be-secure-common.c +++ b/src/backend/libpq/be-secure-common.c @@ -85,12 +85,16 @@ run_ssl_passphrase_command(const char *prompt, bool is_server_start, char *buf, } else if (pclose_rc != 0) { + char *reason; + explicit_bzero(buf, size); + reason = wait_result_to_str(pclose_rc); ereport(loglevel, (errcode_for_file_access(), errmsg("command \"%s\" failed", command), - errdetail_internal("%s", wait_result_to_str(pclose_rc)))); + errdetail_internal("%s", reason))); + pfree(reason); goto error; }