Add defense in assign_session_authorization() against trying to do
authorTom Lane <tgl@sss.pgh.pa.us>
Fri, 6 Jun 2003 16:25:35 +0000 (16:25 +0000)
committerTom Lane <tgl@sss.pgh.pa.us>
Fri, 6 Jun 2003 16:25:35 +0000 (16:25 +0000)
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

index 77fd47bee97f2d84bdbe3101324225dbdad4c7d0..1b2f847752173f484d9560708e85a5bf1b88693f 100644 (file)
@@ -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);