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 <echau...@redhat.com>
> ---
>  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
d...@openvswitch.org
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to