[ovs-dev] [PATCH] odp-util: Fix parsing of Ethertypes 0x8000 and above.

Ethan Jackson ethan at nicira.com
Thu Aug 18 18:12:05 UTC 2011


Looks good,

Ethan

On Thu, Aug 18, 2011 at 10:33, Ben Pfaff <blp at nicira.com> wrote:
> An existing comment in the function being updated explains the problem:
>
>    * Many of the sscanf calls in this function use oversized destination
>    * fields because some sscanf() implementations truncate the range of %i
>    * directives, so that e.g. "%"SCNi16 interprets input of "0xfedc" as a
>    * value of 0x7fff.  The other alternatives are to allow only a single
>    * radix (e.g. decimal or hexadecimal) or to write more sophisticated
>    * parsers.
> ---
>  lib/odp-util.c |    4 ++--
>  1 files changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/lib/odp-util.c b/lib/odp-util.c
> index b416380..00e4627 100644
> --- a/lib/odp-util.c
> +++ b/lib/odp-util.c
> @@ -480,10 +480,10 @@ parse_odp_key_attr(const char *s, struct ofpbuf *key)
>     }
>
>     {
> -        uint16_t eth_type;
> +        int eth_type;
>         int n = -1;
>
> -        if (sscanf(s, "eth_type(%"SCNi16")%n", &eth_type, &n) > 0 && n > 0) {
> +        if (sscanf(s, "eth_type(%i)%n", &eth_type, &n) > 0 && n > 0) {
>             nl_msg_put_be16(key, ODP_KEY_ATTR_ETHERTYPE, htons(eth_type));
>             return n;
>         }
> --
> 1.7.4.4
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>



More information about the dev mailing list