summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--usbredirparser/usbredirparser.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/usbredirparser/usbredirparser.c b/usbredirparser/usbredirparser.c
index 1518b1e..363b976 100644
--- a/usbredirparser/usbredirparser.c
+++ b/usbredirparser/usbredirparser.c
@@ -1865,8 +1865,14 @@ int usbredirparser_unserialize(struct usbredirparser *parser_pub,
}
parser->header_read = i;
- /* Set various length field froms the header (if we've a header) */
+ /* Set various length field from the header (if any) */
if (parser->header_read == header_len) {
+ if (parser->header.length > MAX_PACKET_SIZE) {
+ ERROR("packet length of %d larger than permitted %d bytes",
+ parser->header.length, MAX_PACKET_SIZE);
+ return -1;
+ }
+
int type_header_len =
usbredirparser_get_type_header_len(parser_pub,
parser->header.type, 0);