diff options
author | Jarno Rajahalme <jrajahalme@nicira.com> | 2014-04-11 15:51:10 -0700 |
---|---|---|
committer | Jarno Rajahalme <jrajahalme@nicira.com> | 2014-11-10 10:26:44 -0800 |
commit | 417d7a008b9f280f0e0c603cb6f2871ab75b8d49 (patch) | |
tree | 925eaeac2e5370974413fa09452409145484db42 | |
parent | 89b5ad6f43be9afdafd97815872fcdace082e43a (diff) | |
download | openvswitch-417d7a008b9f280f0e0c603cb6f2871ab75b8d49.tar.gz |
lib/odp-util: Do not use mask if it doesn't exist.
Diagnostic code path dereferenced a NULL pointer.
Signed-off-by: Jarno Rajahalme <jrajahalme@nicira.com>
Reviewed-by: YAMAMOTO Takashi <yamamoto@valinux.co.jp>
-rw-r--r-- | lib/odp-util.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/lib/odp-util.c b/lib/odp-util.c index 7444ccf5c..d83159c4f 100644 --- a/lib/odp-util.c +++ b/lib/odp-util.c @@ -955,22 +955,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 %zu, 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 %zu, 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 %zu, 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; } |