diff options
author | Monty <monty@mariadb.org> | 2020-07-03 23:31:12 +0300 |
---|---|---|
committer | Monty <monty@mariadb.org> | 2020-07-03 23:31:12 +0300 |
commit | 0fd89a1a89da73cec8e87e1f007637eaec51dcc0 (patch) | |
tree | 2198830733091087ae4d342d56c93540698ec325 /sql/table.cc | |
parent | 70684afef2ce6d797f78db192c4472260cd22660 (diff) | |
parent | e9f06b19e09319d11c346943871254aaf755af24 (diff) | |
download | mariadb-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.cc | 9 |
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)* |