1
0
Fork 0
mirror of https://passt.top/passt synced 2025-06-01 22:05:43 +02:00

packet: Give explicit name to maximum packet size

We verify that every packet we store in a pool (and every partial packet
we retreive from it) has a length no longer than UINT16_MAX.  This
originated in the older packet pool implementation which stored packet
lengths in a uint16_t.  Now, that packets are represented by a struct
iovec with its size_t length, this check serves only as a sanity / security
check that we don't have some wildly out of range length due to a bug
elsewhere.

We have may reasons to (slightly) increase this limit in future, so in
preparation, give this quantity an explicit name - PACKET_MAX_LEN.

Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Signed-off-by: Stefano Brivio <sbrivio@redhat.com>
This commit is contained in:
David Gibson 2025-03-12 13:18:34 +11:00 committed by Stefano Brivio
parent 74cd82adc8
commit c43972ad67
2 changed files with 5 additions and 2 deletions

View file

@ -83,7 +83,7 @@ void packet_add_do(struct pool *p, size_t len, const char *start,
if (packet_check_range(p, start, len, func, line))
return;
if (len > UINT16_MAX) {
if (len > PACKET_MAX_LEN) {
trace("add packet length %zu, %s:%i", len, func, line);
return;
}
@ -119,7 +119,7 @@ void *packet_get_do(const struct pool *p, size_t idx, size_t offset,
return NULL;
}
if (len > UINT16_MAX) {
if (len > PACKET_MAX_LEN) {
if (func) {
trace("packet data length %zu, %s:%i",
len, func, line);

View file

@ -6,6 +6,9 @@
#ifndef PACKET_H
#define PACKET_H
/* Maximum size of a single packet stored in pool, including headers */
#define PACKET_MAX_LEN UINT16_MAX
/**
* struct pool - Generic pool of packets stored in a buffer
* @buf: Buffer storing packet descriptors,