1
0
mirror of https://github.com/MariaDB/server.git synced 2025-12-24 11:21:21 +03:00

Bug#50974: Server keeps receiving big (> max_allowed_packet) packets indefinitely.

The server could be tricked to read packets indefinitely if it
received a packet larger than the maximum size of one packet.
This problem is aggravated by the fact that it can be triggered
before authentication.

The solution is to no skip big packets for non-authenticated
sessions. If a big packet is sent before a session is authen-
ticated, a error is returned and the connection is closed.
This commit is contained in:
Davi Arnaut
2010-04-29 10:28:16 -03:00
parent 933e5ca5f0
commit 14ccbeb4e4
3 changed files with 21 additions and 0 deletions

View File

@@ -219,6 +219,16 @@ typedef struct st_net {
my_bool report_error; /* We should report error (we have unreported error) */
my_bool return_errno;
#if defined(MYSQL_SERVER) && !defined(EMBEDDED_LIBRARY)
/*
Controls whether a big packet should be skipped.
Initially set to FALSE by default. Unauthenticated sessions must have
this set to FALSE so that the server can't be tricked to read packets
indefinitely.
*/
my_bool skip_big_packet;
#endif
} NET;
#define packet_error (~(unsigned long) 0)