From 5af6b2abe90d52f7a4dee998c3a5eb24794bf0b1 Mon Sep 17 00:00:00 2001 From: Bruce Momjian Date: Thu, 25 Jan 2007 04:17:46 +0000 Subject: [PATCH] Properly detoast access to bytea field pg_trigger.tgargs. Old code might cause server crash. Backpatch to 8.2.X. --- src/backend/commands/tablecmds.c | 5 ++--- src/backend/commands/trigger.c | 5 ++--- src/backend/utils/adt/ruleutils.c | 5 ++--- 3 files changed, 6 insertions(+), 9 deletions(-) diff --git a/src/backend/commands/tablecmds.c b/src/backend/commands/tablecmds.c index 815cb2459b..ced08506bc 100644 --- a/src/backend/commands/tablecmds.c +++ b/src/backend/commands/tablecmds.c @@ -8,7 +8,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.210 2007/01/05 22:19:26 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/tablecmds.c,v 1.211 2007/01/25 04:17:45 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -1800,8 +1800,7 @@ update_ri_trigger_args(Oid relid, * line; so does trigger.c ... */ tgnargs = pg_trigger->tgnargs; - val = (bytea *) - DatumGetPointer(fastgetattr(tuple, + val = DatumGetByteaP(fastgetattr(tuple, Anum_pg_trigger_tgargs, tgrel->rd_att, &isnull)); if (isnull || tgnargs < RI_FIRST_ATTNAME_ARGNO || diff --git a/src/backend/commands/trigger.c b/src/backend/commands/trigger.c index 9542e3f119..cc7dfc895b 100644 --- a/src/backend/commands/trigger.c +++ b/src/backend/commands/trigger.c @@ -7,7 +7,7 @@ * Portions Copyright (c) 1994, Regents of the University of California * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.211 2007/01/05 22:19:26 momjian Exp $ + * $PostgreSQL: pgsql/src/backend/commands/trigger.c,v 1.212 2007/01/25 04:17:46 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -906,8 +906,7 @@ RelationBuildTriggers(Relation relation) char *p; int i; - val = (bytea *) - DatumGetPointer(fastgetattr(htup, + val = DatumGetByteaP(fastgetattr(htup, Anum_pg_trigger_tgargs, tgrel->rd_att, &isnull)); if (isnull) diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index baef010007..5222fd3a60 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.245 2007/01/20 23:13:01 tgl Exp $ + * $PostgreSQL: pgsql/src/backend/utils/adt/ruleutils.c,v 1.246 2007/01/25 04:17:46 momjian Exp $ * *------------------------------------------------------------------------- */ @@ -529,8 +529,7 @@ pg_get_triggerdef(PG_FUNCTION_ARGS) char *p; int i; - val = (bytea *) - DatumGetPointer(fastgetattr(ht_trig, + val = DatumGetByteaP(fastgetattr(ht_trig, Anum_pg_trigger_tgargs, tgrel->rd_att, &isnull)); if (isnull) -- 2.11.0