From: Jarno Rajahalme Date: Fri, 11 Apr 2014 22:51:10 +0000 (-0700) Subject: lib/odp-util: Do not use mask if it doesn't exist. X-Git-Tag: sliver-openvswitch-2.2.90-1~3^2~136 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;ds=sidebyside;h=546953509095cec6fad42663b659171618b765d2;p=sliver-openvswitch.git lib/odp-util: Do not use mask if it doesn't exist. Diagnostic code path dereferenced a NULL pointer. Signed-off-by: Jarno Rajahalme Reviewed-by: YAMAMOTO Takashi --- diff --git a/lib/odp-util.c b/lib/odp-util.c index b58f1c02c..cc7341342 100644 --- a/lib/odp-util.c +++ b/lib/odp-util.c @@ -1009,22 +1009,22 @@ format_odp_key_attr(const struct nlattr *a, const struct nlattr *ma, expected_len = odp_flow_key_attr_len(nl_attr_type(a)); if (expected_len != -2) { bool bad_key_len = nl_attr_get_size(a) != expected_len; - bool bad_mask_len = ma && nl_attr_get_size(a) != expected_len; + bool bad_mask_len = ma && nl_attr_get_size(ma) != expected_len; if (bad_key_len || bad_mask_len) { if (bad_key_len) { ds_put_format(ds, "(bad key length %"PRIuSIZE", expected %d)(", - nl_attr_get_size(a), - odp_flow_key_attr_len(nl_attr_type(a))); + nl_attr_get_size(a), expected_len); } format_generic_odp_key(a, ds); - if (bad_mask_len) { + if (ma) { ds_put_char(ds, '/'); - ds_put_format(ds, "(bad mask length %"PRIuSIZE", expected %d)(", - nl_attr_get_size(ma), - odp_flow_key_attr_len(nl_attr_type(ma))); + if (bad_mask_len) { + ds_put_format(ds, "(bad mask length %"PRIuSIZE", expected %d)(", + nl_attr_get_size(ma), expected_len); + } + format_generic_odp_key(ma, ds); } - format_generic_odp_key(ma, ds); ds_put_char(ds, ')'); return; }