diff --git a/src/bin/pg_basebackup/pg_basebackup.cpp b/src/bin/pg_basebackup/pg_basebackup.cpp index 88c47e729..8730f1e14 100644 --- a/src/bin/pg_basebackup/pg_basebackup.cpp +++ b/src/bin/pg_basebackup/pg_basebackup.cpp @@ -1649,15 +1649,17 @@ static void backup_dw_file(const char *target_dir) int main(int argc, char **argv) { - progname = get_progname(argv[0]); - if (!strcmp(progname, "gs_basebackup")) { + const char* tempProgname = get_progname(argv[0]); + if (!strcmp(tempProgname, "gs_basebackup")) { init_audit(PROG_NAME_BACKUP, argc, argv); + GS_FREE(tempProgname); return GsBaseBackup(argc, argv); - } else if (!strcmp(progname, "gs_tar")) { + } else if (!strcmp(tempProgname, "gs_tar")) { + GS_FREE(tempProgname); return GsTar(argc, argv); } else { - fprintf(stderr, _("unsupported progname: %s"), progname); - GS_FREE(progname); + fprintf(stderr, _("unsupported progname: %s"), tempProgname); + GS_FREE(tempProgname); return 0; } } @@ -1717,7 +1719,6 @@ static int GsTar(int argc, char** argv) int c; int option_index; char* tarfilename = NULL; - GS_FREE(progname); progname = "gs_tar"; GsTarHelp(argc, argv); @@ -1765,9 +1766,11 @@ static int GsTar(int argc, char** argv) securec_check_c(errorno, "\0", "\0"); tarfile = fopen(tarfilename, "rb"); if (tarfile == NULL) { - fprintf(stderr, _("WARNING: %s not found!\n"), filename); + fprintf(stderr, _("WARNING: %s not found!\n"), tarfilename); + GS_FREE(tarfilename); exit(1); } + GS_FREE(tarfilename); while (true) { size_t r; @@ -2009,7 +2012,6 @@ static int GsBaseBackup(int argc, char** argv) {"progress", no_argument, NULL, 'P'}, {NULL, 0, NULL, 0}}; int c = 0, option_index = 0; - GS_FREE(progname); progname = "gs_basebackup"; set_pglocale_pgservice(argv[0], PG_TEXTDOMAIN("gs_basebackup")); diff --git a/src/bin/pg_basebackup/pg_recvlogical.cpp b/src/bin/pg_basebackup/pg_recvlogical.cpp index 97f6d7dba..a9cb83c06 100644 --- a/src/bin/pg_basebackup/pg_recvlogical.cpp +++ b/src/bin/pg_basebackup/pg_recvlogical.cpp @@ -521,6 +521,7 @@ static void StreamLogicalLog(void) { char* copybuf = NULL; int64 last_status = -1; + PQExpBuffer res = NULL; output_written_lsn = InvalidXLogRecPtr; output_fsync_lsn = InvalidXLogRecPtr; @@ -741,7 +742,7 @@ static void StreamLogicalLog(void) /* signal that a fsync is needed */ output_unsynced = true; - PQExpBuffer res = createPQExpBuffer(); + res = createPQExpBuffer(); char *resultStream = copybuf + hdr_len; if (g_parallel_decode && !g_raw && g_decode_style == 'b') { StreamToText(copybuf + hdr_len, res); @@ -806,6 +807,7 @@ error: } PQfinish(conn); conn = NULL; + destroyPQExpBuffer(res); } /*