diff options
author | unknown <gkodinov/kgeorge@macbook.gmz> | 2006-11-13 12:28:55 +0200 |
---|---|---|
committer | unknown <gkodinov/kgeorge@macbook.gmz> | 2006-11-13 12:28:55 +0200 |
commit | f53af7b8e5a8913af0625031304eb824b6330e4b (patch) | |
tree | ba15fc6e9927f2912d39569bd3b43edf678f3427 /sql/protocol.h | |
parent | 8b447a8af71cb44be048a451ec19177015d2a8bc (diff) | |
download | mariadb-git-f53af7b8e5a8913af0625031304eb824b6330e4b.tar.gz |
Bug #19216: Client crashes on long SELECT
The server sends a number of columns to the client.
It uses a limited "fast" function for that instead of the
general one. This fast function cannot send numbers larger
than 2 bytes.
This causes the client to expect smaller number of columns.
The client writes outside of the allocated memory buffer
as a result.
Fixed the server to use the general function to send column
count.
Fixed the client to check the column count before writing
column data.
mysql-test/t/mysql_client.test:
Bug #19216: Client crashes on long SELECT
- test case
sql/protocol.cc:
Bug #19216: Client crashes on long SELECT
- renamed the function for bether comprehention
and made it local
- used the right (non-local) function to transfer
the column count in Protocol::send_fields
sql/protocol.h:
Bug #19216: Client crashes on long SELECT
- made optimized net_store_length local
sql-common/client.c:
Bug #19216: Client crashes on long SELECT
- fixed the client to check for older servers (without the fix).
Diffstat (limited to 'sql/protocol.h')
-rw-r--r-- | sql/protocol.h | 1 |
1 files changed, 0 insertions, 1 deletions
diff --git a/sql/protocol.h b/sql/protocol.h index 32d6acccddf..ce3adb41df5 100644 --- a/sql/protocol.h +++ b/sql/protocol.h @@ -177,7 +177,6 @@ void send_ok(THD *thd, ha_rows affected_rows=0L, ulonglong id=0L, const char *info=0); void send_eof(THD *thd, bool no_flush=0); bool send_old_password_request(THD *thd); -char *net_store_length(char *packet,uint length); char *net_store_data(char *to,const char *from, uint length); char *net_store_data(char *to,int32 from); char *net_store_data(char *to,longlong from); |