From d56657c35d9cd442438754c68b9aaa30e6720cc4 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 3 Apr 2020 11:24:56 -0400 Subject: Fix bogus CALLED_AS_TRIGGER() defenses. contrib/lo's lo_manage() thought it could use trigdata->tg_trigger->tgname in its error message about not being called as a trigger. That naturally led to a core dump. unique_key_recheck() figured it could Assert that fcinfo->context is a TriggerData node in advance of having checked that it's being called as a trigger. That's harmless in production builds, and perhaps not that easy to reach in any case, but it's logically wrong. The first of these per bug #16340 from William Crowell; the second from manual inspection of other CALLED_AS_TRIGGER call sites. Back-patch the lo.c change to all supported branches, the other to v10 where the thinko crept in. Discussion: https://postgr.es/m/16340-591c7449dc7c8c47@postgresql.org --- src/backend/commands/constraint.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/backend/commands/constraint.c') diff --git a/src/backend/commands/constraint.c b/src/backend/commands/constraint.c index 806962a686b..ab888022e78 100644 --- a/src/backend/commands/constraint.c +++ b/src/backend/commands/constraint.c @@ -40,7 +40,7 @@ Datum unique_key_recheck(PG_FUNCTION_ARGS) { - TriggerData *trigdata = castNode(TriggerData, fcinfo->context); + TriggerData *trigdata = (TriggerData *) fcinfo->context; const char *funcname = "unique_key_recheck"; ItemPointerData checktid; ItemPointerData tmptid; -- cgit v1.2.3