mirror of
https://github.com/postgres/postgres.git
synced 2025-06-30 21:42:05 +03:00
sepgsql: Enforce db_procedure:{execute} permission.
To do this, we add an additional object access hook type, OAT_FUNCTION_EXECUTE. KaiGai Kohei
This commit is contained in:
@ -79,6 +79,7 @@
|
||||
#include "postgres.h"
|
||||
|
||||
#include "access/htup_details.h"
|
||||
#include "catalog/objectaccess.h"
|
||||
#include "catalog/pg_aggregate.h"
|
||||
#include "catalog/pg_proc.h"
|
||||
#include "catalog/pg_type.h"
|
||||
@ -1625,6 +1626,7 @@ ExecInitAgg(Agg *node, EState *estate, int eflags)
|
||||
if (aclresult != ACLCHECK_OK)
|
||||
aclcheck_error(aclresult, ACL_KIND_PROC,
|
||||
get_func_name(aggref->aggfnoid));
|
||||
InvokeFunctionExecuteHook(aggref->aggfnoid);
|
||||
|
||||
peraggstate->transfn_oid = transfn_oid = aggform->aggtransfn;
|
||||
peraggstate->finalfn_oid = finalfn_oid = aggform->aggfinalfn;
|
||||
@ -1647,6 +1649,7 @@ ExecInitAgg(Agg *node, EState *estate, int eflags)
|
||||
if (aclresult != ACLCHECK_OK)
|
||||
aclcheck_error(aclresult, ACL_KIND_PROC,
|
||||
get_func_name(transfn_oid));
|
||||
InvokeFunctionExecuteHook(transfn_oid);
|
||||
if (OidIsValid(finalfn_oid))
|
||||
{
|
||||
aclresult = pg_proc_aclcheck(finalfn_oid, aggOwner,
|
||||
@ -1654,6 +1657,7 @@ ExecInitAgg(Agg *node, EState *estate, int eflags)
|
||||
if (aclresult != ACLCHECK_OK)
|
||||
aclcheck_error(aclresult, ACL_KIND_PROC,
|
||||
get_func_name(finalfn_oid));
|
||||
InvokeFunctionExecuteHook(finalfn_oid);
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user