diff options
author | Xavi Hernandez <xhernandez@redhat.com> | 2018-04-12 23:31:37 +0200 |
---|---|---|
committer | Xavi Hernandez <xhernandez@redhat.com> | 2018-04-19 11:00:41 +0200 |
commit | 755f6e986b55a6d9e11630ef70deae125660e9eb (patch) | |
tree | 9d460ef271d03fe9ecd2a055dd88adbaede474f6 | |
parent | 281a019e03342537345e98548a0062b96a8e1539 (diff) |
libglusterfs: fix comparison of a NULL dict with a non-NULL dict
Function are_dicts_equal() had a bug when the first argument was NULL and
the second one wasn't NULL. In this case it incorrectly returned that the
dicts were different when they could be equal.
backport of:
> BUG: 1566732
BUG: 1569403
Change-Id: I0fc245c2e7d1395865a76405dbd05e5d34db3273
Signed-off-by: Xavi Hernandez <xhernandez@redhat.com>
-rw-r--r-- | libglusterfs/src/dict.c | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/libglusterfs/src/dict.c b/libglusterfs/src/dict.c index b4a97a9b68e..fc31e01ee9a 100644 --- a/libglusterfs/src/dict.c +++ b/libglusterfs/src/dict.c @@ -207,17 +207,17 @@ are_dicts_equal (dict_t *one, dict_t *two, if (!match) match = dict_match_everything; - cmp.dict = two; - cmp.value_ignore = value_ignore; - if (!two) { - num_matches1 = dict_foreach_match (one, match, NULL, - dict_null_foreach_fn, NULL); + if ((one == NULL) || (two == NULL)) { + num_matches1 = dict_foreach_match(one ? one : two, match, NULL, + dict_null_foreach_fn, NULL); goto done; - } else { - num_matches1 = dict_foreach_match (one, match, NULL, - key_value_cmp, &cmp); } + cmp.dict = two; + cmp.value_ignore = value_ignore; + num_matches1 = dict_foreach_match (one, match, NULL, key_value_cmp, + &cmp); + if (num_matches1 == -1) return _gf_false; |