From 5af6b2abe90d52f7a4dee998c3a5eb24794bf0b1 Mon Sep 17 00:00:00 2001
From: Bruce Momjian <bruce@momjian.us>
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.40.0