From 297b8f20beb54ecef24adac5b09c0209ac5f6470 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. Backport of: > BUG: 1566732 BUG: 1569409 Change-Id: I0fc245c2e7d1395865a76405dbd05e5d34db3273 Signed-off-by: Xavi Hernandez --- libglusterfs/src/dict.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/libglusterfs/src/dict.c b/libglusterfs/src/dict.c index 96cb9e94bda..247dcce7f7b 100644 --- a/libglusterfs/src/dict.c +++ b/libglusterfs/src/dict.c @@ -187,17 +187,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