Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 990b7c0

Browse files
committed
Send procedure calls instead of procedure bodies. This fixes allows to conform privelege escalation rules in SECURITY DEFINER procedures.
1 parent 0853e4e commit 990b7c0

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

multimaster.c

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@
6262
#include "pglogical_output/hooks.h"
6363
#include "parser/analyze.h"
6464
#include "parser/parse_relation.h"
65+
#include "tcop/pquery.h"
6566

6667
#include "multimaster.h"
6768
#include "ddd.h"
@@ -3938,13 +3939,15 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString,
39383939
if (!skipCommand && (context == PROCESS_UTILITY_TOPLEVEL || MtmUtilityProcessedInXid != GetCurrentTransactionId()))
39393940
MtmUtilityProcessedInXid = InvalidTransactionId;
39403941

3941-
if (context == PROCESS_UTILITY_TOPLEVEL || context == PROCESS_UTILITY_QUERY)
3942-
{
3943-
if (!skipCommand && !MtmTx.isReplicated && (MtmUtilityProcessedInXid == InvalidTransactionId)) {
3944-
MtmUtilityProcessedInXid = GetCurrentTransactionId();
3942+
if (!skipCommand && !MtmTx.isReplicated && (MtmUtilityProcessedInXid == InvalidTransactionId)) {
3943+
MtmUtilityProcessedInXid = GetCurrentTransactionId();
3944+
3945+
if (context == PROCESS_UTILITY_TOPLEVEL)
39453946
MtmProcessDDLCommand(queryString, true);
3946-
executed = true;
3947-
}
3947+
else
3948+
MtmProcessDDLCommand(ActivePortal->sourceText, true);
3949+
3950+
executed = true;
39483951
}
39493952

39503953
if (PreviousProcessUtilityHook != NULL)

0 commit comments

Comments
 (0)