From 9a84a0784c84560cfaa7de28b50a582122416246 Mon Sep 17 00:00:00 2001 From: markj Date: Fri, 10 Mar 2017 18:54:48 +0000 Subject: MFC r314153, r314154: Fix some memory leaks in CDDL code. --- cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c') diff --git a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c index ac0524b..653f2b2 100644 --- a/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c +++ b/cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c @@ -933,9 +933,11 @@ dt_provmod_open(dt_provmod_t **provmod, dt_fdlist_t *dfp) * 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 *errp, (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; -- cgit v1.1