[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", ð_type, &n) > 0 && n > 0) {
> + if (sscanf(s, "eth_type(%i)%n", ð_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