diff options
author | David Gibson <david@gibson.dropbear.id.au> | 2025-03-12 13:18:34 +1100 |
---|---|---|
committer | Stefano Brivio <sbrivio@redhat.com> | 2025-03-12 23:08:33 +0100 |
commit | c43972ad67806fb403cdbc05179441917f2a776b (patch) | |
tree | 66f09fa18c5134980ccdd729e5898368e99a0b10 | |
parent | 74cd82adc87552c7ef6d255069a974b4ebeab4a1 (diff) | |
download | passt-c43972ad67806fb403cdbc05179441917f2a776b.tar passt-c43972ad67806fb403cdbc05179441917f2a776b.tar.gz passt-c43972ad67806fb403cdbc05179441917f2a776b.tar.bz2 passt-c43972ad67806fb403cdbc05179441917f2a776b.tar.lz passt-c43972ad67806fb403cdbc05179441917f2a776b.tar.xz passt-c43972ad67806fb403cdbc05179441917f2a776b.tar.zst passt-c43972ad67806fb403cdbc05179441917f2a776b.zip |
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>
-rw-r--r-- | packet.c | 4 | ||||
-rw-r--r-- | packet.h | 3 |
2 files changed, 5 insertions, 2 deletions
@@ -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); @@ -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, |