Skip to content

Commit 10b4690

Browse files
committed
Send procedure calls instead of procedure bodies. This fixes allows to conform privelege escalation rules in SECURITY DEFINER procedures.
1 parent 2c0c2bb commit 10b4690

File tree

1 file changed

+9
-6
lines changed

1 file changed

+9
-6
lines changed

contrib/mmts/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"
@@ -3939,13 +3940,15 @@ static void MtmProcessUtility(Node *parsetree, const char *queryString,
39393940
if (!skipCommand && (context == PROCESS_UTILITY_TOPLEVEL || MtmUtilityProcessedInXid != GetCurrentTransactionId()))
39403941
MtmUtilityProcessedInXid = InvalidTransactionId;
39413942

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

39513954
if (PreviousProcessUtilityHook != NULL)

0 commit comments

Comments
 (0)