mirror of
https://github.com/MariaDB/server.git
synced 2025-08-07 00:04:31 +03:00
row0mysql.c:
Play safe and set a MySQL 1 - 12 byte BLOB reference to zero except for the length and pointer areas in it innobase/row/row0mysql.c: Play safe and set a MySQL 1 - 12 byte BLOB reference to zero except for the length and pointer areas in it
This commit is contained in:
@@ -66,13 +66,23 @@ row_mysql_store_blob_ref(
|
|||||||
byte* dest, /* in: where to store */
|
byte* dest, /* in: where to store */
|
||||||
ulint col_len, /* in: dest buffer size: determines into
|
ulint col_len, /* in: dest buffer size: determines into
|
||||||
how many bytes the BLOB length is stored,
|
how many bytes the BLOB length is stored,
|
||||||
this may vary from 1 to 4 bytes */
|
the space for the length may vary from 1
|
||||||
byte* data, /* in: BLOB data */
|
to 4 bytes */
|
||||||
ulint len) /* in: BLOB length */
|
byte* data, /* in: BLOB data; if the value to store
|
||||||
|
is SQL NULL this should be NULL pointer */
|
||||||
|
ulint len) /* in: BLOB length; if the value to store
|
||||||
|
is SQL NULL this should be 0; remember
|
||||||
|
also to set the NULL bit in the MySQL record
|
||||||
|
header! */
|
||||||
{
|
{
|
||||||
ulint sum = 0;
|
ulint sum = 0;
|
||||||
ulint i;
|
ulint i;
|
||||||
|
|
||||||
|
/* MySQL might assume the field is set to zero except the length and
|
||||||
|
the pointer fields */
|
||||||
|
|
||||||
|
memset(dest, '\0', col_len);
|
||||||
|
|
||||||
/* In dest there are 1 - 4 bytes reserved for the BLOB length,
|
/* In dest there are 1 - 4 bytes reserved for the BLOB length,
|
||||||
and after that 8 bytes reserved for the pointer to the data.
|
and after that 8 bytes reserved for the pointer to the data.
|
||||||
In 32-bit architectures we only use the first 4 bytes of the pointer
|
In 32-bit architectures we only use the first 4 bytes of the pointer
|
||||||
|
Reference in New Issue
Block a user