Fix use-after-release issue with pg_identify_object_as_address()
authorMichael Paquier
Wed, 28 Apr 2021 02:58:43 +0000 (11:58 +0900)
committerMichael Paquier
Wed, 28 Apr 2021 02:58:43 +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 f7dd45342be9d003b8332a6d23e0e3e0256e74ad..64ceccbf004e4c9584d13137dab05ff2277c18da 100644 (file)
@@ -5092,7 +5092,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);