Fix use-after-release issue with pg_identify_object_as_address()
authorMichael Paquier <michael@paquier.xyz>
Wed, 28 Apr 2021 02:58:50 +0000 (11:58 +0900)
committerMichael Paquier <michael@paquier.xyz>
Wed, 28 Apr 2021 02:58:50 +0000 (11:58 +0900)
Spotted by buildfarm member prion, with -DRELCACHE_FORCE_RELEASE.

Introduced in f7aab36.

Discussion: https://postgr.es/m/2759018.1619577848@sss.pgh.pa.us
Backpatch-through: 9.6

src/backend/catalog/objectaddress.c

index 967e055b4de826c5944b3220aacec5fc8c7a8abd..9edab108dff7b8e5709eda0029a1ac8b78bb5cf6 100644 (file)
@@ -5035,7 +5035,7 @@ getObjectIdentityParts(const ObjectAddress *object,
                    elog(ERROR, "cache lookup failed for event trigger %u",
                         object->objectId);
                trigForm = (Form_pg_event_trigger) GETSTRUCT(tup);
-               evtname = NameStr(trigForm->evtname);
+               evtname = pstrdup(NameStr(trigForm->evtname));
                appendStringInfoString(&buffer, quote_identifier(evtname));
                if (objname)
                    *objname = list_make1(evtname);