Skip to content

Commit 357b5bf

Browse files
author
Shaohua Wang
committed
Merge branch 'mysql-5.6' into mysql-5.7
2 parents 90aec3d + 6123073 commit 357b5bf

File tree

1 file changed

+11
-7
lines changed

1 file changed

+11
-7
lines changed

storage/innobase/row/row0log.cc

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,7 @@ row_log_table_delete(
646646
&old_pk_extra_size);
647647
ut_ad(old_pk_extra_size < 0x100);
648648

649-
mrec_size = 4 + old_pk_size;
649+
mrec_size = 6 + old_pk_size;
650650

651651
/* Log enough prefix of the BLOB unless both the
652652
old and new table are in COMPACT or REDUNDANT format,
@@ -683,8 +683,8 @@ row_log_table_delete(
683683
*b++ = static_cast<byte>(old_pk_extra_size);
684684

685685
/* Log the size of external prefix we saved */
686-
mach_write_to_2(b, ext_size);
687-
b += 2;
686+
mach_write_to_4(b, ext_size);
687+
b += 4;
688688

689689
rec_convert_dtuple_to_temp(
690690
b + old_pk_extra_size, new_index,
@@ -2437,14 +2437,14 @@ row_log_table_apply_op(
24372437
break;
24382438

24392439
case ROW_T_DELETE:
2440-
/* 1 (extra_size) + 2 (ext_size) + at least 1 (payload) */
2441-
if (mrec + 4 >= mrec_end) {
2440+
/* 1 (extra_size) + 4 (ext_size) + at least 1 (payload) */
2441+
if (mrec + 6 >= mrec_end) {
24422442
return(NULL);
24432443
}
24442444

24452445
extra_size = *mrec++;
2446-
ext_size = mach_read_from_2(mrec);
2447-
mrec += 2;
2446+
ext_size = mach_read_from_4(mrec);
2447+
mrec += 4;
24482448
ut_ad(mrec < mrec_end);
24492449

24502450
/* We assume extra_size < 0x100 for the PRIMARY KEY prefix.
@@ -2455,6 +2455,10 @@ row_log_table_apply_op(
24552455
rec_init_offsets_temp(mrec, new_index, offsets);
24562456
next_mrec = mrec + rec_offs_data_size(offsets) + ext_size;
24572457
if (log->table->n_v_cols) {
2458+
if (next_mrec + 2 >= mrec_end) {
2459+
return(NULL);
2460+
}
2461+
24582462
next_mrec += mach_read_from_2(next_mrec);
24592463
}
24602464

0 commit comments

Comments
 (0)