mirror of
https://github.com/freebsd/freebsd-src
synced 2024-10-04 15:40:44 +00:00
bhyve: Avoid underflows when handling remote commands
Reviewed by: corvink, jhb
MFC after: 1 week
Sponsored by: Innovate UK
Differential Revision: https://reviews.freebsd.org/D43480
(cherry picked from commit cfa2c78aee
)
This commit is contained in:
parent
4c14a3a6ae
commit
83b800c590
|
@ -983,6 +983,8 @@ gdb_read_mem(const uint8_t *data, size_t len)
|
|||
bool started;
|
||||
int error;
|
||||
|
||||
assert(len >= 1);
|
||||
|
||||
/* Skip 'm' */
|
||||
data += 1;
|
||||
len -= 1;
|
||||
|
@ -1094,6 +1096,8 @@ gdb_write_mem(const uint8_t *data, size_t len)
|
|||
size_t resid, todo, bytes;
|
||||
int error;
|
||||
|
||||
assert(len >= 1);
|
||||
|
||||
/* Skip 'M' */
|
||||
data += 1;
|
||||
len -= 1;
|
||||
|
@ -1488,7 +1492,7 @@ gdb_query(const uint8_t *data, size_t len)
|
|||
|
||||
data += strlen("qThreadExtraInfo");
|
||||
len -= strlen("qThreadExtraInfo");
|
||||
if (*data != ',') {
|
||||
if (len == 0 || *data != ',') {
|
||||
send_error(EINVAL);
|
||||
return;
|
||||
}
|
||||
|
@ -1539,7 +1543,7 @@ handle_command(const uint8_t *data, size_t len)
|
|||
case 'H': {
|
||||
int tid;
|
||||
|
||||
if (data[1] != 'g' && data[1] != 'c') {
|
||||
if (len < 2 || (data[1] != 'g' && data[1] != 'c')) {
|
||||
send_error(EINVAL);
|
||||
break;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue