From 21a134a26100b377191735ad49f996eac03047de Mon Sep 17 00:00:00 2001 From: guiyao Date: Thu, 17 Dec 2020 09:34:13 -0500 Subject: [PATCH] backport to fix CVE-2018-16850 --- src/backend/utils/adt/ruleutils.c | 10 ++++++---- 1 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/backend/utils/adt/ruleutils.c b/src/backend/utils/adt/ruleutils.c index 4c9a49c..0eea491 100644 --- a/src/backend/utils/adt/ruleutils.c +++ b/src/backend/utils/adt/ruleutils.c @@ -952,22 +952,24 @@ pg_get_triggerdef_worker(Oid trigid, bool pretty) value = fastgetattr(ht_trig, Anum_pg_trigger_tgoldtable, tgrel->rd_att, &isnull); if (!isnull) - tgoldtable = NameStr(*((NameData *) DatumGetPointer(value))); + tgoldtable = NameStr(*DatumGetName(value)); else tgoldtable = NULL; value = fastgetattr(ht_trig, Anum_pg_trigger_tgnewtable, tgrel->rd_att, &isnull); if (!isnull) - tgnewtable = NameStr(*((NameData *) DatumGetPointer(value))); + tgnewtable = NameStr(*DatumGetName(value)); else tgnewtable = NULL; if (tgoldtable != NULL || tgnewtable != NULL) { appendStringInfoString(&buf, "REFERENCING "); if (tgoldtable != NULL) - appendStringInfo(&buf, "OLD TABLE AS %s ", tgoldtable); + appendStringInfo(&buf, "OLD TABLE AS %s ", + quote_identifier(tgoldtable)); if (tgnewtable != NULL) - appendStringInfo(&buf, "NEW TABLE AS %s ", tgnewtable); + appendStringInfo(&buf, "NEW TABLE AS %s ", + quote_identifier(tgnewtable)); } if (TRIGGER_FOR_ROW(trigrec->tgtype)) -- 1.8.3.1