Skip to content

Commit 2698685

Browse files
committed
BUG#27692831: DECODE OF SOME PIT ON PIPELINE_STATS_MEMBER_MESSAGE IS NOT
ENDIAN SAFE Some PITs of the stats member message are not being decoded correctly w.r.t. endianness. Specifically the PIT_TRANSACTIONS_NEGATIVE_CERTIFIED, the PIT_TRANSACTIONS_ROWS_VALIDATING and the PIT_TRANSACTIONS_LOCAL_ROLLBACK. The fix was to call uint8korr() upon reading from the raw buffer.
1 parent 15b92ef commit 2698685

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

plugin/group_replication/src/pipeline_stats.cc

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -269,19 +269,19 @@ void Pipeline_stats_member_message::decode_payload(const unsigned char *buffer,
269269
switch (payload_item_type) {
270270
case PIT_TRANSACTIONS_NEGATIVE_CERTIFIED:
271271
if (slider + payload_item_length <= end) {
272-
uint64 transactions_negative_certified_aux = *slider;
272+
uint64 transactions_negative_certified_aux = uint8korr(slider);
273273
slider += payload_item_length;
274274
m_transactions_negative_certified =
275-
(int64)transactions_negative_certified_aux;
275+
static_cast<int64>(transactions_negative_certified_aux);
276276
}
277277
break;
278278

279279
case PIT_TRANSACTIONS_ROWS_VALIDATING:
280280
if (slider + payload_item_length <= end) {
281-
uint64 transactions_rows_validating_aux = *slider;
281+
uint64 transactions_rows_validating_aux = uint8korr(slider);
282282
slider += payload_item_length;
283283
m_transactions_rows_validating =
284-
(int64)transactions_rows_validating_aux;
284+
static_cast<int64>(transactions_rows_validating_aux);
285285
}
286286
break;
287287

@@ -303,10 +303,10 @@ void Pipeline_stats_member_message::decode_payload(const unsigned char *buffer,
303303

304304
case PIT_TRANSACTIONS_LOCAL_ROLLBACK:
305305
if (slider + payload_item_length <= end) {
306-
uint64 transactions_local_rollback_aux = *slider;
306+
uint64 transactions_local_rollback_aux = uint8korr(slider);
307307
slider += payload_item_length;
308308
m_transactions_local_rollback =
309-
(int64)transactions_local_rollback_aux;
309+
static_cast<int64>(transactions_local_rollback_aux);
310310
}
311311
break;
312312

0 commit comments

Comments
 (0)