Received: by 2002:a25:8b12:0:0:0:0:0 with SMTP id i18csp4307441ybl; Mon, 26 Aug 2019 08:31:06 -0700 (PDT) X-Google-Smtp-Source: APXvYqwQZkF9vrPjvMMHlHamEGWdW0MSc6haMwaYUyoGoiSw7HRteqsXFd327TM927fZyQVzhhKA X-Received: by 2002:a17:90a:77c9:: with SMTP id e9mr19472366pjs.141.1566833466820; Mon, 26 Aug 2019 08:31:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1566833466; cv=none; d=google.com; s=arc-20160816; b=wa9T94C6t0H48Yeadlsw1HnZG4lGN8dz8Rk0RyFhlI07Kr767k+0LLx+FqgLV+gQKP EcEyIvrSOAIJIoQlRi2unjV8TvJUN+5KywqomKjE7ytCwAL+M3QB/EJnBb6aqmcilTdJ jL2yV25xnTWlTfHCRwYeHYEJkJl07RKLS0Dq0v6Ai8V/lRb1/usKhemTXEK1r42rFqLx szBl6utIFl9jyBIgd7eENAS062pRhkJKnAUVUaSmVPGSXxCFkSiVa09UqS6Ft7d5eabO Rw+zNsn/h6ROPe75he36Na/H/ZFZx4WTCFUr3/JuQ31/j8TSa+YabjHQ3kZdTKbiIj1X S8Xw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:to:from; bh=FY9i9D73ML8mRRXW6XxAtgqP0nRz34JngN8wSY+3X2c=; b=nPlw6SNDrnkQDHHdR0LsZQuF8VsxR+w6R1Ikm0Plr/s2sTwHaa2lTye/Ytqwx8T3Xm DucCDibnhpeK51EITw7mTOqI13Ohcphgos0m7aDIIRAVTlUblhOrvwfMDPnzqhIGt6/A OvhPHrAH3UFYPin9jKxdkQ5t15krTohSx6ti7IWRPMsyBdeYbOzfT1LLCiJOoLF2OKoy cP80vM5wIx2TibvdDhx42zOTGrGuy1LlzmTAaZS9RQd16Rp/zRYtc5SzNgVK3JhBGITN 4JGvuD3mVn90ngC0Cp8gSQe+yWFvPr8GqwsmFfhYWQXPn49zMp9pI6uQ9DI36HyIMpnK gsrg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 42si10014696plb.193.2019.08.26.08.30.42; Mon, 26 Aug 2019 08:31:06 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-nfs-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-nfs-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1731765AbfHZOeZ (ORCPT + 99 others); Mon, 26 Aug 2019 10:34:25 -0400 Received: from mx1.redhat.com ([209.132.183.28]:54204 "EHLO mx1.redhat.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726484AbfHZOeZ (ORCPT ); Mon, 26 Aug 2019 10:34:25 -0400 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.redhat.com (Postfix) with ESMTPS id AA4F8307CDE7 for ; Mon, 26 Aug 2019 14:34:24 +0000 (UTC) Received: from madhat.boston.devel.redhat.com (ovpn-116-35.phx2.redhat.com [10.3.116.35]) by smtp.corp.redhat.com (Postfix) with ESMTP id 66113100197A for ; Mon, 26 Aug 2019 14:34:24 +0000 (UTC) From: Steve Dickson To: Linux NFS Mailing list Subject: [PATCH 2/2] nfs-utils: Removed a number of Coverity Scan USE_AFTER_FREE errors Date: Mon, 26 Aug 2019 10:34:21 -0400 Message-Id: <20190826143421.13712-2-steved@redhat.com> In-Reply-To: <20190826143421.13712-1-steved@redhat.com> References: <20190826143421.13712-1-steved@redhat.com> MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.5.16 (mx1.redhat.com [10.5.110.49]); Mon, 26 Aug 2019 14:34:24 +0000 (UTC) Sender: linux-nfs-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-nfs@vger.kernel.org Signed-off-by: Steve Dickson --- utils/gssd/krb5_util.c | 4 +++- utils/idmapd/idmapd.c | 6 ++++-- utils/statd/monitor.c | 5 ++++- utils/statd/notlist.c | 9 +++++++-- 4 files changed, 18 insertions(+), 6 deletions(-) diff --git a/utils/gssd/krb5_util.c b/utils/gssd/krb5_util.c index f68be85..0474783 100644 --- a/utils/gssd/krb5_util.c +++ b/utils/gssd/krb5_util.c @@ -1016,6 +1016,8 @@ query_krb5_ccache(const char* cred_cache, char **ret_princname, char *str = NULL; char *princstring; + *ret_princname = *ret_realm = NULL; + ret = krb5_init_context(&context); if (ret) return 0; @@ -1050,7 +1052,7 @@ err_princ: krb5_cc_close(context, ccache); err_cache: krb5_free_context(context); - return found; + return (*ret_princname && *ret_realm); } /*==========================*/ diff --git a/utils/idmapd/idmapd.c b/utils/idmapd/idmapd.c index 267acea..c187e7d 100644 --- a/utils/idmapd/idmapd.c +++ b/utils/idmapd/idmapd.c @@ -520,14 +520,16 @@ static void clntscancb(int UNUSED(fd), short UNUSED(which), void *data) { struct idmap_clientq *icq = data; - struct idmap_client *ic; + struct idmap_client *ic, *ic_next; - TAILQ_FOREACH(ic, icq, ic_next) + for (ic = TAILQ_FIRST(icq); ic != NULL; ic = ic_next) { + ic_next = TAILQ_NEXT(ic, ic_next); if (ic->ic_fd == -1 && nfsopen(ic) == -1) { close(ic->ic_dirfd); TAILQ_REMOVE(icq, ic, ic_next); free(ic); } + } } static void diff --git a/utils/statd/monitor.c b/utils/statd/monitor.c index 9400048..20c8ebd 100644 --- a/utils/statd/monitor.c +++ b/utils/statd/monitor.c @@ -66,7 +66,7 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp) *my_name = argp->mon_id.my_id.my_name; struct my_id *id = &argp->mon_id.my_id; char *cp; - notify_list *clnt; + notify_list *clnt = NULL; struct sockaddr_in my_addr = { .sin_family = AF_INET, .sin_addr.s_addr = htonl(INADDR_LOOPBACK), @@ -177,6 +177,7 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp) * We're committed...ignoring errors. Let's hope that a malloc() * doesn't fail. (I should probably fix this assumption.) */ + clnt = NULL; if (!existing && !(clnt = nlist_new(my_name, mon_name, 0))) { free(dnsname); xlog_warn("out of memory"); @@ -223,6 +224,7 @@ sm_mon_1_svc(struct mon *argp, struct svc_req *rqstp) failure: xlog_warn("STAT_FAIL to %s for SM_MON of %s", my_name, mon_name); + free(clnt); return (&result); } @@ -242,6 +244,7 @@ load_one_host(const char *hostname, clnt->dns_name = strdup(hostname); if (clnt->dns_name == NULL) { nlist_free(NULL, clnt); + free(clnt); return 0; } diff --git a/utils/statd/notlist.c b/utils/statd/notlist.c index 0341c15..45879a4 100644 --- a/utils/statd/notlist.c +++ b/utils/statd/notlist.c @@ -210,7 +210,6 @@ nlist_free(notify_list **head, notify_list *entry) if (NL_MON_NAME(entry)) free(NL_MON_NAME(entry)); free(entry->dns_name); - free(entry); } /* @@ -219,8 +218,14 @@ nlist_free(notify_list **head, notify_list *entry) void nlist_kill(notify_list **head) { - while (*head) + notify_list *next; + + while (*head) { + next = (*head)->next; nlist_free(head, *head); + free(*head); + *head = next; + } } /* -- 2.21.0