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

Commit 242a42f

Browse files
committed
Do not define MULTIMASTER_MAX_GID_SIZE less then GIDSIZE; also change all strcpy to strncpy
1 parent b0747df commit 242a42f

File tree

3 files changed

+10
-10
lines changed

3 files changed

+10
-10
lines changed

arbiter.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -523,7 +523,7 @@ static int MtmConnectSocket(int node, int port)
523523
req.hdr.dxid = HANDSHAKE_MAGIC;
524524
req.hdr.sxid = ShmemVariableCache->nextXid;
525525
req.hdr.csn = MtmGetCurrentTime();
526-
strcpy(req.connStr, Mtm->nodes[MtmNodeId-1].con.connStr);
526+
strncpy(req.connStr, Mtm->nodes[MtmNodeId-1].con.connStr, MULTIMASTER_MAX_CONN_STR_SIZE);
527527
if (!MtmWriteSocket(sd, &req, sizeof req)) {
528528
MTM_ELOG(WARNING, "Arbiter failed to send handshake message to %s:%d: %s", host, port, strerror(errno));
529529
pg_closesocket(sd, MtmUseRDMA);

multimaster.c

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -900,7 +900,7 @@ MtmCreateTransState(MtmCurrentTrans* x)
900900
ts->gtid.xid = x->xid;
901901
ts->gtid.node = MtmNodeId;
902902
}
903-
strcpy(ts->gid, x->gid);
903+
strncpy(ts->gid, x->gid, GIDSIZE);
904904
x->isActive = true;
905905

906906
Assert(ts->gid[0] == '\0' || MtmGidParseNodeId(ts->gid) == ts->gtid.node);
@@ -1430,7 +1430,7 @@ MtmLogAbortLogicalMessage(int nodeId, char const* gid)
14301430
{
14311431
MtmAbortLogicalMessage msg;
14321432
lsn_t lsn;
1433-
strcpy(msg.gid, gid);
1433+
strncpy(msg.gid, gid, GIDSIZE);
14341434
msg.origin_node = nodeId;
14351435
msg.origin_lsn = replorigin_session_origin_lsn;
14361436
lsn = LogLogicalMessage("A", (char*)&msg, sizeof msg, false);
@@ -1525,7 +1525,7 @@ MtmEndTransaction(MtmCurrentTrans* x, bool commit)
15251525
ts->gtid = x->gtid;
15261526
ts->nSubxids = 0;
15271527
ts->votingCompleted = true;
1528-
strcpy(ts->gid, x->gid);
1528+
strncpy(ts->gid, x->gid, GIDSIZE);
15291529
MtmTransactionListAppend(ts);
15301530
if (*x->gid) {
15311531
replorigin_session_origin_lsn = INVALID_LSN;
@@ -1682,7 +1682,7 @@ static void MtmLoadPreparedTransactions(void)
16821682
ts->participantsMask = (((nodemask_t)1 << Mtm->nAllNodes) - 1) & ~((nodemask_t)1 << (MtmNodeId-1));
16831683
ts->nConfigChanges = Mtm->nConfigChanges;
16841684
ts->votedMask = 0;
1685-
strcpy(ts->gid, gid);
1685+
strncpy(ts->gid, gid, GIDSIZE);
16861686
MtmTransactionListAppend(ts);
16871687
tm->status = ts->status;
16881688
tm->state = ts;
@@ -1763,7 +1763,7 @@ void MtmJoinTransaction(GlobalTransactionId* gtid, csn_t globalSnapshot, nodemas
17631763
void MtmSetCurrentTransactionGID(char const* gid)
17641764
{
17651765
MTM_LOG3("Set current transaction xid="XID_FMT" GID %s", MtmTx.xid, gid);
1766-
strcpy(MtmTx.gid, gid);
1766+
strncpy(MtmTx.gid, gid, GIDSIZE);
17671767
MtmTx.isDistributed = true;
17681768
MtmTx.isReplicated = true;
17691769
MtmTx.gtid.node = MtmGidParseNodeId(gid);
@@ -2546,7 +2546,7 @@ void MtmUpdateNodeConnectionInfo(MtmConnectionInfo* conn, char const* connStr)
25462546
while(isspace(*connStr))
25472547
connStr++;
25482548

2549-
strcpy(conn->connStr, connStr);
2549+
strncpy(conn->connStr, connStr, MULTIMASTER_MAX_CONN_STR_SIZE);
25502550

25512551
host = strstr(connStr, "host=");
25522552
if (host == NULL) {
@@ -5053,12 +5053,12 @@ static void MtmProcessUtility(PlannedStmt *pstmt,
50535053
break;
50545054
case TRANS_STMT_PREPARE:
50555055
MtmTx.isTwoPhase = true;
5056-
strcpy(MtmTx.gid, stmt->gid);
5056+
strncpy(MtmTx.gid, stmt->gid, GIDSIZE);
50575057
break;
50585058
case TRANS_STMT_COMMIT_PREPARED:
50595059
case TRANS_STMT_ROLLBACK_PREPARED:
50605060
Assert(!MtmTx.isTwoPhase);
5061-
strcpy(MtmTx.gid, stmt->gid);
5061+
strncpy(MtmTx.gid, stmt->gid, GIDSIZE);
50625062
break;
50635063
default:
50645064
break;

multimaster.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ typedef ulong64 csn_t; /* commit serial number */
100100
typedef ulong64 lsn_t;
101101
#define INVALID_LSN InvalidXLogRecPtr
102102

103-
typedef char pgid_t[MULTIMASTER_MAX_GID_SIZE];
103+
typedef char pgid_t[GIDSIZE];
104104

105105
#define SELF_CONNECTIVITY_MASK (Mtm->nodes[MtmNodeId-1].connectivityMask)
106106
#define EFFECTIVE_CONNECTIVITY_MASK ( SELF_CONNECTIVITY_MASK | Mtm->stoppedNodeMask | ~Mtm->clique )

0 commit comments

Comments
 (0)