From 0e033f5b6de569e712d5f94b77878b8ffacf6397 Mon Sep 17 00:00:00 2001 From: Daniel Gustafsson Date: Wed, 11 Dec 2024 12:48:22 +0100 Subject: [PATCH] Fix a memory leak in dumping functions with TRANSFORMs The gneration of the dump clause for functions with TRANSFORM calls would leak the memory for holding the result of the Oid array parsing. Fix by freeing. While in there, switch to using pg_malloc instead of palloc in order to be consistent with the rest of the file. Author: Oleg Tselebrovskiy Reviewed-by: Daniel Gustafsson Discussion: https://postgr.es/m/baf1ae4511288e5b421f41e79a3df1a0@postgrespro.ru --- src/bin/pg_dump/pg_dump.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/bin/pg_dump/pg_dump.c b/src/bin/pg_dump/pg_dump.c index ec0cdf4ed74..89276524ae0 100644 --- a/src/bin/pg_dump/pg_dump.c +++ b/src/bin/pg_dump/pg_dump.c @@ -12531,7 +12531,7 @@ dumpFunc(Archive *fout, const FuncInfo *finfo) if (*protrftypes) { - Oid *typeids = palloc(FUNC_MAX_ARGS * sizeof(Oid)); + Oid *typeids = pg_malloc(FUNC_MAX_ARGS * sizeof(Oid)); int i; appendPQExpBufferStr(q, " TRANSFORM "); @@ -12543,6 +12543,8 @@ dumpFunc(Archive *fout, const FuncInfo *finfo) appendPQExpBuffer(q, "FOR TYPE %s", getFormattedTypeName(fout, typeids[i], zeroAsNone)); } + + free(typeids); } if (prokind[0] == PROKIND_WINDOW)