diff options
author | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2021-04-22 16:04:48 -0400 |
---|---|---|
committer | Alvaro Herrera <alvherre@alvh.no-ip.org> | 2021-04-22 16:04:48 -0400 |
commit | 43b55ec4bc3bc06596d966391f16defe016310ec (patch) | |
tree | 5c56d6ef9bb0f09a8f736c3821ace4606d3d7022 | |
parent | 84f15ccd4c25c4ffc4de6ed82f7658a3a199a1d7 (diff) | |
download | postgresql-43b55ec4bc3bc06596d966391f16defe016310ec.tar.gz postgresql-43b55ec4bc3bc06596d966391f16defe016310ec.zip |
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).
-rw-r--r-- | src/backend/catalog/pg_inherits.c | 5 | ||||
-rw-r--r-- | 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 98bf48d1e2b..6447b528546 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 12ef36a73e6..2305dff4077 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); |