diff options
author | Barak Sason Rofman <bsasonro@redhat.com> | 2021-01-21 12:52:52 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-01-21 12:52:52 +0200 |
commit | 6cece6e03239f7e68cd0cb89e5bdff569802cda7 (patch) | |
tree | 098b1ad0346aa9fb38ddabd51acacd3432e91e64 /xlators | |
parent | ca389d89f3393c05e93ff21db906f0ee73ac89d8 (diff) | |
download | glusterfs-6cece6e03239f7e68cd0cb89e5bdff569802cda7.tar.gz glusterfs-6cece6e03239f7e68cd0cb89e5bdff569802cda7.tar.xz glusterfs-6cece6e03239f7e68cd0cb89e5bdff569802cda7.zip |
glusterd - fixing coverity issues (#1947)
* glusterd - fixing coverity issues
- Dereference after null check (CID 1437686)
- Dereference null return value (CID 1437687)
- A check for the return value of a memory allocation was missing, added
it.
- A value of a pointer was being dereferenced after a NULL-pointer check.
With this change the pointer is no longer dereferenced.
Change-Id: I10bf8a2cb08612981dbb788315dad7dbb4efe2cb
updates: #1060
Signed-off-by: Barak Sason Rofman <bsasonro@redhat.com>
Diffstat (limited to 'xlators')
-rw-r--r-- | xlators/mgmt/glusterd/src/glusterd-utils.c | 42 |
1 files changed, 26 insertions, 16 deletions
diff --git a/xlators/mgmt/glusterd/src/glusterd-utils.c b/xlators/mgmt/glusterd/src/glusterd-utils.c index b14dba040b..962557c04e 100644 --- a/xlators/mgmt/glusterd/src/glusterd-utils.c +++ b/xlators/mgmt/glusterd/src/glusterd-utils.c @@ -14610,6 +14610,7 @@ glusterd_check_brick_order(dict_t *dict, char *err_str, int32_t type, glusterd_brickinfo_t *brickinfo = NULL; addrinfo_list_t *pre_list = NULL; addrinfo_list_t *pre_list_tmp1 = NULL; + addrinfo_list_t *pre_list_tmp2 = NULL; int count = 0; const char failed_string[2048] = @@ -14626,6 +14627,11 @@ glusterd_check_brick_order(dict_t *dict, char *err_str, int32_t type, "behavior. "; ai_list = MALLOC(sizeof(addrinfo_list_t)); + if (ai_list == NULL) { + gf_msg(this->name, GF_LOG_ERROR, ENOMEM, GD_MSG_NO_MEMORY, + "failed to allocate memory"); + goto out; + } ai_list->info = NULL; CDS_INIT_LIST_HEAD(&ai_list->list); @@ -14823,25 +14829,29 @@ found_bad_brick_order: ret = -1; out: - ai_list_tmp2 = NULL; GF_FREE(brick_list_ptr); - cds_list_for_each_entry(pre_list_tmp1, &pre_list->list, list) - { - if (pre_list_tmp1->info) - freeaddrinfo(pre_list_tmp1->info); - free(ai_list_tmp2); - ai_list_tmp2 = pre_list_tmp1; + if (pre_list != NULL) { + cds_list_for_each_entry_safe(pre_list_tmp1, pre_list_tmp2, + &pre_list->list, list) + { + if (pre_list_tmp1->info) + freeaddrinfo(pre_list_tmp1->info); + FREE(pre_list_tmp1); + } + FREE(pre_list); } - free(pre_list); - cds_list_for_each_entry(ai_list_tmp1, &ai_list->list, list) - { - if (ai_list_tmp1->info) - freeaddrinfo(ai_list_tmp1->info); - free(ai_list_tmp2); - ai_list_tmp2 = ai_list_tmp1; + + if (ai_list != NULL) { + cds_list_for_each_entry_safe(ai_list_tmp1, ai_list_tmp2, &ai_list->list, + list) + { + if (ai_list_tmp1->info) + freeaddrinfo(ai_list_tmp1->info); + FREE(ai_list_tmp1); + } + FREE(ai_list); } - free(ai_list); - free(ai_list_tmp2); + gf_msg_debug("glusterd", 0, "Returning %d", ret); return ret; } |