From 52d1b36e3738b7117c5ecf0a83ceba1438fad68a Mon Sep 17 00:00:00 2001 From: Xavi Hernandez Date: Thu, 12 Apr 2018 23:31:37 +0200 Subject: 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. Fixes: bz#1566732 Change-Id: I0fc245c2e7d1395865a76405dbd05e5d34db3273 Signed-off-by: Xavi Hernandez --- libglusterfs/src/dict.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'libglusterfs/src') diff --git a/libglusterfs/src/dict.c b/libglusterfs/src/dict.c index 0f9632160cc..bd22477f2c4 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; -- cgit