From 43b55ec4bc3bc06596d966391f16defe016310ec Mon Sep 17 00:00:00 2001 From: Alvaro Herrera Date: Thu, 22 Apr 2021 16:04:48 -0400 Subject: [PATCH] Fix uninitialized memory bug Have interested callers of find_inheritance_children set the detached_exist value to false prior to calling it, so that that routine only has to set it true in the rare cases where it is necessary. Don't touch it otherwise. Per buildfarm member thorntail (which reported a UBSan failure here). --- src/backend/catalog/pg_inherits.c | 5 +---- src/backend/partitioning/partdesc.c | 1 + 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/backend/catalog/pg_inherits.c b/src/backend/catalog/pg_inherits.c index 98bf48d1e2..6447b52854 100644 --- a/src/backend/catalog/pg_inherits.c +++ b/src/backend/catalog/pg_inherits.c @@ -53,7 +53,7 @@ typedef struct SeenRelsEntry * against possible DROPs of child relations. * * If a partition's pg_inherits row is marked "detach pending", - * *detached_exist (if not null) is set true, otherwise it is set false. + * *detached_exist (if not null) is set true. * * If omit_detached is true and there is an active snapshot (not the same as * the catalog snapshot used to scan pg_inherits!) and a pg_inherits tuple @@ -84,9 +84,6 @@ find_inheritance_children(Oid parentrelId, bool omit_detached, if (!has_subclass(parentrelId)) return NIL; - if (detached_exist) - *detached_exist = false; - /* * Scan pg_inherits and build a working array of subclass OIDs. */ diff --git a/src/backend/partitioning/partdesc.c b/src/backend/partitioning/partdesc.c index 12ef36a73e..2305dff407 100644 --- a/src/backend/partitioning/partdesc.c +++ b/src/backend/partitioning/partdesc.c @@ -131,6 +131,7 @@ RelationBuildPartitionDesc(Relation rel, bool omit_detached) * concurrently, whatever this function returns will be accurate as of * some well-defined point in time. */ + detached_exist = false; inhoids = find_inheritance_children(RelationGetRelid(rel), omit_detached, NoLock, &detached_exist); nparts = list_length(inhoids);