summaryrefslogtreecommitdiff
path: root/sql/table.cc
diff options
context:
space:
mode:
authorMonty <monty@mariadb.org>2020-07-03 23:31:12 +0300
committerMonty <monty@mariadb.org>2020-07-03 23:31:12 +0300
commit0fd89a1a89da73cec8e87e1f007637eaec51dcc0 (patch)
tree2198830733091087ae4d342d56c93540698ec325 /sql/table.cc
parent70684afef2ce6d797f78db192c4472260cd22660 (diff)
parente9f06b19e09319d11c346943871254aaf755af24 (diff)
downloadmariadb-git-0fd89a1a89da73cec8e87e1f007637eaec51dcc0.tar.gz
Merge remote-tracking branch 'origin/10.4' into 10.5
Diffstat (limited to 'sql/table.cc')
-rw-r--r--sql/table.cc9
1 files changed, 5 insertions, 4 deletions
diff --git a/sql/table.cc b/sql/table.cc
index 9e7592e4b97..06178f8e789 100644
--- a/sql/table.cc
+++ b/sql/table.cc
@@ -2109,8 +2109,8 @@ int TABLE_SHARE::init_from_binary_frm_image(THD *thd, bool write,
share->rec_buff_length= rec_buff_length;
if (!(record= (uchar *) alloc_root(&share->mem_root, rec_buff_length)))
goto err; /* purecov: inspected */
- MEM_NOACCESS(record, rec_buff_length);
- MEM_UNDEFINED(record, share->reclength);
+ /* Mark bytes after record as not accessable to catch overrun bugs */
+ MEM_NOACCESS(record + share->reclength, rec_buff_length - share->reclength);
share->default_values= record;
memcpy(record, frm_image + record_offset, share->reclength);
@@ -3959,7 +3959,6 @@ enum open_frm_error open_table_from_share(THD *thd, TABLE_SHARE *share,
if (!(record= (uchar*) alloc_root(&outparam->mem_root,
share->rec_buff_length * records)))
goto err; /* purecov: inspected */
- MEM_NOACCESS(record, share->rec_buff_length * records);
}
for (i= 0; i < 3;)
@@ -3968,8 +3967,10 @@ enum open_frm_error open_table_from_share(THD *thd, TABLE_SHARE *share,
if (++i < records)
record+= share->rec_buff_length;
}
+ /* Mark bytes between records as not accessable to catch overrun bugs */
for (i= 0; i < records; i++)
- MEM_UNDEFINED(outparam->record[i], share->reclength);
+ MEM_NOACCESS(outparam->record[i] + share->reclength,
+ share->rec_buff_length - share->reclength);
if (!(field_ptr = (Field **) alloc_root(&outparam->mem_root,
(uint) ((share->fields+1)*