Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
M
mariadb
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
mariadb
Commits
f04cf03f
Commit
f04cf03f
authored
Feb 23, 2010
by
Sergei Golubchik
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix for a possible DoS in the my_net_skip_rest()
parent
2840821c
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
10 additions
and
3 deletions
+10
-3
include/mysql.h.pp
include/mysql.h.pp
+1
-1
include/mysql_com.h
include/mysql_com.h
+1
-1
sql/net_serv.cc
sql/net_serv.cc
+6
-0
sql/sql_connect.cc
sql/sql_connect.cc
+2
-1
No files found.
include/mysql.h.pp
View file @
f04cf03f
...
...
@@ -28,7 +28,7 @@ typedef struct st_net {
unsigned
int
*
return_status
;
unsigned
char
reading_or_writing
;
char
save_char
;
my_bool
unused0
;
char
net_skip_rest_factor
;
my_bool
unused
;
my_bool
compress
;
my_bool
unused1
;
...
...
include/mysql_com.h
View file @
f04cf03f
...
...
@@ -254,7 +254,7 @@ typedef struct st_net {
unsigned
int
*
return_status
;
unsigned
char
reading_or_writing
;
char
save_char
;
my_bool
unused0
;
/* Please remove with the next incompatible ABI change. */
char
net_skip_rest_factor
;
my_bool
unused
;
/* Please remove with the next incompatible ABI change */
my_bool
compress
;
my_bool
unused1
;
/* Please remove with the next incompatible ABI change. */
...
...
sql/net_serv.cc
View file @
f04cf03f
...
...
@@ -130,6 +130,7 @@ my_bool my_net_init(NET *net, Vio* vio)
net
->
last_error
[
0
]
=
0
;
net
->
compress
=
0
;
net
->
reading_or_writing
=
0
;
net
->
where_b
=
net
->
remain_in_buf
=
0
;
net
->
net_skip_rest_factor
=
0
;
net
->
last_errno
=
0
;
#ifdef USE_QUERY_CACHE
query_cache_init_query
(
net
);
...
...
@@ -743,6 +744,7 @@ static my_bool net_safe_read(NET *net, uchar *buff, size_t length,
static
my_bool
my_net_skip_rest
(
NET
*
net
,
uint32
remain
,
thr_alarm_t
*
alarmed
,
ALARM
*
alarm_buff
)
{
longlong
limit
=
net
->
max_packet_size
*
net
->
net_skip_rest_factor
;
uint32
old
=
remain
;
DBUG_ENTER
(
"my_net_skip_rest"
);
DBUG_PRINT
(
"enter"
,(
"bytes_to_skip: %u"
,
(
uint
)
remain
));
...
...
@@ -766,11 +768,15 @@ static my_bool my_net_skip_rest(NET *net, uint32 remain, thr_alarm_t *alarmed,
DBUG_RETURN
(
1
);
update_statistics
(
thd_increment_bytes_received
(
length
));
remain
-=
(
uint32
)
length
;
limit
-=
length
;
if
(
limit
<
0
)
DBUG_RETURN
(
1
);
}
if
(
old
!=
MAX_PACKET_LENGTH
)
break
;
if
(
net_safe_read
(
net
,
net
->
buff
,
NET_HEADER_SIZE
,
alarmed
))
DBUG_RETURN
(
1
);
limit
-=
NET_HEADER_SIZE
;
old
=
remain
=
uint3korr
(
net
->
buff
);
net
->
pkt_nr
++
;
}
...
...
sql/sql_connect.cc
View file @
f04cf03f
...
...
@@ -474,7 +474,8 @@ check_user(THD *thd, enum enum_server_command command,
}
}
my_ok
(
thd
);
thd
->
password
=
test
(
passwd_len
);
// remember for error messages
thd
->
net
.
net_skip_rest_factor
=
2
;
// skip at most 2*max_packet_size
thd
->
password
=
test
(
passwd_len
);
// remember for error messages
/* Ready to handle queries */
DBUG_RETURN
(
0
);
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment