git: 83b800c59020 - stable/13 - bhyve: Avoid underflows when handling remote commands
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Tue, 30 Jan 2024 14:19:35 UTC
The branch stable/13 has been updated by markj:
URL: https://cgit.FreeBSD.org/src/commit/?id=83b800c59020f4b208666459896281d385fdc557
commit 83b800c59020f4b208666459896281d385fdc557
Author: Mark Johnston <markj@FreeBSD.org>
AuthorDate: 2024-01-23 16:40:40 +0000
Commit: Mark Johnston <markj@FreeBSD.org>
CommitDate: 2024-01-30 14:19:28 +0000
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 cfa2c78aee859bfc6549951bb6a36085fdd374e8)
---
usr.sbin/bhyve/gdb.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/usr.sbin/bhyve/gdb.c b/usr.sbin/bhyve/gdb.c
index cec9ac92ac1c..62f16998450f 100644
--- a/usr.sbin/bhyve/gdb.c
+++ b/usr.sbin/bhyve/gdb.c
@@ -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;
}