aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2003-06-06 16:25:35 +0000
committerTom Lane <tgl@sss.pgh.pa.us>2003-06-06 16:25:35 +0000
commit2bc84b68523f52ff8f14789719bee0178c61df84 (patch)
treef8c37fab1b19fba43ff2311da549a2d3ea6ba0c7
parentdd484de0b0c6db9589b9aacc29667a7e776d4c29 (diff)
downloadpostgresql-2bc84b68523f52ff8f14789719bee0178c61df84.tar.gz
postgresql-2bc84b68523f52ff8f14789719bee0178c61df84.zip
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.
-rw-r--r--src/backend/commands/variable.c12
1 files changed, 11 insertions, 1 deletions
diff --git a/src/backend/commands/variable.c b/src/backend/commands/variable.c
index 77fd47bee97..1b2f8477521 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);