]> granicus.if.org Git - postgresql/commitdiff
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);