mirror of
https://github.com/postgres/postgres.git
synced 2025-11-26 23:43:30 +03:00
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.
This commit is contained in:
@@ -9,7 +9,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.71.2.1 2003/02/01 18:31:37 tgl Exp $
|
* $Header: /cvsroot/pgsql/src/backend/commands/variable.c,v 1.71.2.2 2003/06/06 16:25:52 tgl Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@@ -551,6 +551,16 @@ assign_session_authorization(const char *value, bool doit, bool interactive)
|
|||||||
/* not a saved ID, so look it up */
|
/* not a saved ID, so look it up */
|
||||||
HeapTuple userTup;
|
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,
|
userTup = SearchSysCache(SHADOWNAME,
|
||||||
PointerGetDatum(value),
|
PointerGetDatum(value),
|
||||||
0, 0, 0);
|
0, 0, 0);
|
||||||
|
|||||||
Reference in New Issue
Block a user