fib: fix off-by-one error in rewrite length check 64/40464/3
authorBenoît Ganne <bganne@cisco.com>
Wed, 6 Mar 2024 18:02:18 +0000 (19:02 +0100)
committerNeale Ranns <neale@graphiant.com>
Tue, 9 Apr 2024 04:49:17 +0000 (04:49 +0000)
The rewrite string can be up to max_size, and max_size can be up to
VNET_REWRITE_TOTAL_BYTES. Don't waste the last byte.

Type: fix

Change-Id: I2fb7e9873b6b4c1e6a55b172c7f753f3c5910802
Signed-off-by: Benoît Ganne <bganne@cisco.com>
src/vnet/adj/rewrite.h

index 5cb90e4..06b1b00 100644 (file)
@@ -147,8 +147,8 @@ vnet_rewrite_set_data_internal (vnet_rewrite_header_t * rw,
                                int max_size, void *data, int data_bytes)
 {
   /* Sanity check values carefully for this clib_memset operation */
-  ASSERT ((max_size > 0) && (max_size < VNET_REWRITE_TOTAL_BYTES));
-  ASSERT ((data_bytes >= 0) && (data_bytes < max_size));
+  ASSERT ((max_size > 0) && (max_size <= VNET_REWRITE_TOTAL_BYTES));
+  ASSERT ((data_bytes >= 0) && (data_bytes <= max_size));
 
   rw->data_bytes = data_bytes;
   clib_memcpy_fast (rw->data, data, data_bytes);