svn commit: r315014 - in stable/11/cddl/contrib/opensolaris/lib: libctf/common libdtrace/common
Mark Johnston
markj at FreeBSD.org
Fri Mar 10 18:54:49 UTC 2017
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;
More information about the svn-src-stable-11
mailing list