On 2/5/25 17:03, Eelco Chaudron wrote:
> Previously, nxm_field_bytes() could return a negative value when given
> an invalid header. To address this, we now assert when processing an
> invalid value. Additionally, the function has been updated to return
> an unsigned value.
>
> Signed-off-by: Eelco Chaudron <[email protected]>
> ---
> lib/nx-match.c | 9 ++++++---
> 1 file changed, 6 insertions(+), 3 deletions(-)
>
> diff --git a/lib/nx-match.c b/lib/nx-match.c
> index 8686e4430..f4d74d23b 100644
> --- a/lib/nx-match.c
> +++ b/lib/nx-match.c
> @@ -131,9 +131,10 @@ nxm_experimenter_len(uint64_t header)
>
> /* Returns the number of bytes that follow the header for an NXM/OXM entry
> * with the given 'header'. */
> -static int
> +static unsigned int
> nxm_payload_len(uint64_t header)
> {
> + ovs_assert(nxm_length(header) >= nxm_experimenter_len(header));
> return nxm_length(header) - nxm_experimenter_len(header);
> }
>
> @@ -162,14 +163,16 @@ nxm_header_len(uint64_t header)
> static uint64_t
> nxm_make_exact_header(uint64_t header)
> {
> - int new_len = nxm_payload_len(header) / 2 + nxm_experimenter_len(header);
> + unsigned int new_len = nxm_payload_len(header) \
Not a full review, but, please, don't use line continuations in C code.
> + / 2 + nxm_experimenter_len(header);
> return NXM_HEADER(nxm_vendor(header), nxm_class(header),
> nxm_field(header), 0, new_len);
> }
> static uint64_t
> nxm_make_wild_header(uint64_t header)
> {
> - int new_len = nxm_payload_len(header) * 2 + nxm_experimenter_len(header);
> + unsigned int new_len = nxm_payload_len(header) * 2 \
Same here.
> + + nxm_experimenter_len(header);
> return NXM_HEADER(nxm_vendor(header), nxm_class(header),
> nxm_field(header), 1, new_len);
> }
_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev