Fix use-after-release issue with pg_identify_object_as_address()
authorMichael Paquier <[email protected]>
Wed, 28 Apr 2021 02:59:00 +0000 (11:59 +0900)
committerMichael Paquier <[email protected]>
Wed, 28 Apr 2021 02:59:00 +0000 (11:59 +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 f9a8270f9592372e260b1a53972c90a7f3396f62..f5ab72de9df1916697a4356f0652850a664b0348 100644 (file)
@@ -4681,7 +4681,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);