From e1f92176a8d372e99386c0f007d6a38c0a54ca5b Mon Sep 17 00:00:00 2001 From: Amar Tumballi Date: Wed, 19 Dec 2018 09:45:42 +0530 Subject: all: handle USE_AFTER_FREE warnings * we shouldn't be using 'local' after DHT_STACK_UNWIND() as it frees the content of local. Add a 'goto out' or similar logic to handle the situation. * fix possible overlook of unref(dict), instead of unref(xdata). * make coverity happy by re-ordering unref in meta-defaults. * gfid-access: re-order dictionary allocation so we don't have to do a extra unref. * other obvious errors reported. updates: bz#789278 Change-Id: If05961ee946b0c4868df19861d7e4a927a2a2489 Signed-off-by: Amar Tumballi --- libglusterfs/src/common-utils.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'libglusterfs/src/common-utils.c') diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 985e7580050..b6e4fbecf8a 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -3568,17 +3568,21 @@ gf_is_local_addr(char *hostname) } for (res = result; res != NULL; res = res->ai_next) { - gf_msg_debug(this->name, 0, "%s ", get_ip_from_addrinfo(res, &ip)); + get_ip_from_addrinfo(res, &ip); + gf_msg_debug(this->name, 0, "%s ", ip); if (ip) { - found = gf_is_loopback_localhost(res->ai_addr, hostname) || - gf_interface_search(ip); + found = (gf_is_loopback_localhost(res->ai_addr, hostname) || + gf_interface_search(ip)); } if (found) { GF_FREE(ip); goto out; } GF_FREE(ip); + /* the above free will not set ip to NULL, and hence, there is + double free possible as the loop continues. set ip to NULL. */ + ip = NULL; } out: -- cgit