Check SELECT permissions in subqueries.
This commit is contained in:
parent
472d802ced
commit
1a6de0760d
@ -26,7 +26,7 @@
|
|||||||
*
|
*
|
||||||
*
|
*
|
||||||
* IDENTIFICATION
|
* IDENTIFICATION
|
||||||
* $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.44 1998/02/26 04:31:09 momjian Exp $
|
* $Header: /cvsroot/pgsql/src/backend/executor/execMain.c,v 1.45 1998/02/27 08:43:52 vadim Exp $
|
||||||
*
|
*
|
||||||
*-------------------------------------------------------------------------
|
*-------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
@ -54,12 +54,12 @@
|
|||||||
#include "catalog/heap.h"
|
#include "catalog/heap.h"
|
||||||
#include "commands/trigger.h"
|
#include "commands/trigger.h"
|
||||||
|
|
||||||
|
void
|
||||||
|
ExecCheckPerms(CmdType operation, int resultRelation, List *rangeTable,
|
||||||
|
Query *parseTree);
|
||||||
|
|
||||||
|
|
||||||
/* decls for local routines only used within this module */
|
/* decls for local routines only used within this module */
|
||||||
static void
|
|
||||||
ExecCheckPerms(CmdType operation, int resultRelation, List *rangeTable,
|
|
||||||
Query *parseTree);
|
|
||||||
static TupleDesc
|
static TupleDesc
|
||||||
InitPlan(CmdType operation, Query *parseTree,
|
InitPlan(CmdType operation, Query *parseTree,
|
||||||
Plan *plan, EState *estate);
|
Plan *plan, EState *estate);
|
||||||
@ -273,14 +273,7 @@ ExecutorEnd(QueryDesc *queryDesc, EState *estate)
|
|||||||
BufferRefCountRestore(estate->es_refcount);
|
BufferRefCountRestore(estate->es_refcount);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* ===============================================================
|
void
|
||||||
* ===============================================================
|
|
||||||
static routines follow
|
|
||||||
* ===============================================================
|
|
||||||
* ===============================================================
|
|
||||||
*/
|
|
||||||
|
|
||||||
static void
|
|
||||||
ExecCheckPerms(CmdType operation,
|
ExecCheckPerms(CmdType operation,
|
||||||
int resultRelation,
|
int resultRelation,
|
||||||
List *rangeTable,
|
List *rangeTable,
|
||||||
@ -376,6 +369,13 @@ ExecCheckPerms(CmdType operation,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* ===============================================================
|
||||||
|
* ===============================================================
|
||||||
|
static routines follow
|
||||||
|
* ===============================================================
|
||||||
|
* ===============================================================
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
/* ----------------------------------------------------------------
|
/* ----------------------------------------------------------------
|
||||||
* InitPlan
|
* InitPlan
|
||||||
|
@ -106,11 +106,14 @@ ExecSubPlan(SubPlan *node, List *pvar, ExprContext *econtext)
|
|||||||
*
|
*
|
||||||
* ----------------------------------------------------------------
|
* ----------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
extern void ExecCheckPerms(CmdType op, int resRel, List *rtable, Query *q);
|
||||||
bool
|
bool
|
||||||
ExecInitSubPlan(SubPlan *node, EState *estate, Plan *parent)
|
ExecInitSubPlan(SubPlan *node, EState *estate, Plan *parent)
|
||||||
{
|
{
|
||||||
EState *sp_estate = CreateExecutorState();
|
EState *sp_estate = CreateExecutorState();
|
||||||
|
|
||||||
|
ExecCheckPerms (CMD_SELECT, 0, node->rtable, (Query*) NULL);
|
||||||
|
|
||||||
sp_estate->es_range_table = node->rtable;
|
sp_estate->es_range_table = node->rtable;
|
||||||
sp_estate->es_param_list_info = estate->es_param_list_info;
|
sp_estate->es_param_list_info = estate->es_param_list_info;
|
||||||
sp_estate->es_param_exec_vals = estate->es_param_exec_vals;
|
sp_estate->es_param_exec_vals = estate->es_param_exec_vals;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user