From 2bc84b68523f52ff8f14789719bee0178c61df84 Mon Sep 17 00:00:00 2001 From: Tom Lane Date: Fri, 6 Jun 2003 16:25:35 +0000 Subject: [PATCH] Add defense in assign_session_authorization() against trying to do catalog lookups when not in a transaction. This prevents bizarre failures if someone tries to set a value for session_authorization in postgresql.conf. Per report from Fernando Nasser. --- src/backend/commands/variable.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c index 77fd47bee9..1b2f847752 100644 --- a/src/backend/commands/variable.c +++ b/src/backend/commands/variable.c @@ -9,7 +9,7 @@ * * * IDENTIFICATION - * $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.77 2003/05/22 17:13:08 tgl Exp $ + * $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.78 2003/06/06 16:25:35 tgl Exp $ * *------------------------------------------------------------------------- */ @@ -750,6 +750,16 @@ assign_session_authorization(const char *value, bool doit, bool interactive) /* not a saved ID, so look it up */ HeapTuple userTup; + if (! IsTransactionState()) + { + /* + * Can't do catalog lookups, so fail. The upshot of this is + * that session_authorization cannot be set in postgresql.conf, + * which seems like a good thing anyway. + */ + return NULL; + } + userTup = SearchSysCache(SHADOWNAME, PointerGetDatum(value), 0, 0, 0); -- 2.11.0