Properly detoast access to bytea field pg_trigger.tgargs. Old code
authorBruce Momjian
Thu, 25 Jan 2007 04:17:46 +0000 (04:17 +0000)
committerBruce Momjian
Thu, 25 Jan 2007 04:17:46 +0000 (04:17 +0000)
might cause server crash.

Backpatch to 8.2.X.

src/backend/commands/tablecmds.c
src/backend/commands/trigger.c
src/backend/utils/adt/ruleutils.c

index 815cb2459bbc24ecfa6da862f3c2425c6b805630..ced08506bceb794432b3aac59e0528cccff23912 100644 (file)
@@ -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 ||
index 9542e3f1198a9dc390001d800e611a43f9749dbb..cc7dfc895b83d5ddf7e20610724ea4416b91dd68 100644 (file)
@@ -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)
index baef0100073a6902edf09caa6b473ae1fd02ec06..5222fd3a6021535e5e63a934afa50693619a869b 100644 (file)
@@ -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)