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
This commit is contained in:
Mark Johnston 2024-01-23 11:40:40 -05:00
parent 380b7eb309
commit cfa2c78aee

View file

@ -1052,6 +1052,8 @@ gdb_read_mem(const uint8_t *data, size_t len)
bool started;
int error;
assert(len >= 1);
/* Skip 'm' */
data += 1;
len -= 1;
@ -1163,6 +1165,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;
@ -1557,7 +1561,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;
}
@ -1608,7 +1612,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;
}