From owner-svn-src-stable@freebsd.org Fri Mar 10 18:54:49 2017 Return-Path: Delivered-To: svn-src-stable@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 922E8D0621F; Fri, 10 Mar 2017 18:54:49 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org (repo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 52DBDB96; Fri, 10 Mar 2017 18:54:49 +0000 (UTC) (envelope-from markj@FreeBSD.org) Received: from repo.freebsd.org ([127.0.1.37]) by repo.freebsd.org (8.15.2/8.15.2) with ESMTP id v2AIsmZ3091121; Fri, 10 Mar 2017 18:54:48 GMT (envelope-from markj@FreeBSD.org) Received: (from markj@localhost) by repo.freebsd.org (8.15.2/8.15.2/Submit) id v2AIsmvO091118; Fri, 10 Mar 2017 18:54:48 GMT (envelope-from markj@FreeBSD.org) Message-Id: <201703101854.v2AIsmvO091118@repo.freebsd.org> X-Authentication-Warning: repo.freebsd.org: markj set sender to markj@FreeBSD.org using -f From: Mark Johnston Date: Fri, 10 Mar 2017 18:54:48 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-11@freebsd.org Subject: svn commit: r315014 - in stable/11/cddl/contrib/opensolaris/lib: libctf/common libdtrace/common X-SVN-Group: stable-11 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-src-stable@freebsd.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: SVN commit messages for all the -stable branches of the src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 10 Mar 2017 18:54:49 -0000 Author: markj Date: Fri Mar 10 18:54:48 2017 New Revision: 315014 URL: https://svnweb.freebsd.org/changeset/base/315014 Log: MFC r314153, r314154: Fix some memory leaks in CDDL code. Modified: stable/11/cddl/contrib/opensolaris/lib/libctf/common/ctf_lib.c stable/11/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c stable/11/cddl/contrib/opensolaris/lib/libdtrace/common/dt_strtab.c Directory Properties: stable/11/ (props changed) Modified: stable/11/cddl/contrib/opensolaris/lib/libctf/common/ctf_lib.c ============================================================================== --- stable/11/cddl/contrib/opensolaris/lib/libctf/common/ctf_lib.c Fri Mar 10 18:53:44 2017 (r315013) +++ stable/11/cddl/contrib/opensolaris/lib/libctf/common/ctf_lib.c Fri Mar 10 18:54:48 2017 (r315014) @@ -346,6 +346,7 @@ ctf_fdopen(int fd, int *errp) if ((sp32 = malloc(nbytes)) == NULL || pread64(fd, sp32, nbytes, hdr.e64.e_shoff) != nbytes) { free(sp); + free(sp32); return (ctf_set_open_errno(errp, errno)); } Modified: stable/11/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c ============================================================================== --- stable/11/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Fri Mar 10 18:53:44 2017 (r315013) +++ stable/11/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c Fri Mar 10 18:54:48 2017 (r315014) @@ -933,9 +933,11 @@ dt_provmod_open(dt_provmod_t **provmod, * reallocate it. We normally won't need to do this * because providers aren't being loaded all the time. */ - if ((p = realloc(p_providers,len)) == NULL) + if ((p = realloc(p_providers,len)) == NULL) { + free(p_providers); /* How do we report errors here? */ return; + } p_providers = p; } else break; @@ -1150,8 +1152,10 @@ dt_vopen(int version, int flags, int *er (void) fcntl(ftfd, F_SETFD, FD_CLOEXEC); alloc: - if ((dtp = malloc(sizeof (dtrace_hdl_t))) == NULL) + if ((dtp = malloc(sizeof (dtrace_hdl_t))) == NULL) { + dt_provmod_destroy(&provmod); return (set_open_errno(dtp, errp, EDT_NOMEM)); + } bzero(dtp, sizeof (dtrace_hdl_t)); dtp->dt_oflags = flags; Modified: stable/11/cddl/contrib/opensolaris/lib/libdtrace/common/dt_strtab.c ============================================================================== --- stable/11/cddl/contrib/opensolaris/lib/libdtrace/common/dt_strtab.c Fri Mar 10 18:53:44 2017 (r315013) +++ stable/11/cddl/contrib/opensolaris/lib/libdtrace/common/dt_strtab.c Fri Mar 10 18:54:48 2017 (r315014) @@ -256,8 +256,10 @@ dt_strtab_insert(dt_strtab_t *sp, const * Now copy the string data into our buffer list, and then update * the global counts of strings and bytes. Return str's byte offset. */ - if (dt_strtab_copyin(sp, str, len + 1) == -1) + if (dt_strtab_copyin(sp, str, len + 1) == -1) { + free(hp); return (-1L); + } sp->str_nstrs++; sp->str_size += len + 1;