summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJarno Rajahalme <jrajahalme@nicira.com>2014-04-11 15:51:10 -0700
committerJarno Rajahalme <jrajahalme@nicira.com>2014-11-10 10:26:44 -0800
commit417d7a008b9f280f0e0c603cb6f2871ab75b8d49 (patch)
tree925eaeac2e5370974413fa09452409145484db42
parent89b5ad6f43be9afdafd97815872fcdace082e43a (diff)
downloadopenvswitch-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.c16
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;
}