changeset 3762:f995324130e9

6500684 memory leak in libsldap:setup_next_search()
author rm88369
date Mon, 05 Mar 2007 02:22:57 -0800
parents f5abe2a41b3e
children fb3428ef36ce
files usr/src/lib/libsldap/common/ns_reads.c
diffstat 1 files changed, 8 insertions(+), 0 deletions(-) [+]
line wrap: on
line diff
--- a/usr/src/lib/libsldap/common/ns_reads.c	Sun Mar 04 22:14:52 2007 -0800
+++ b/usr/src/lib/libsldap/common/ns_reads.c	Mon Mar 05 02:22:57 2007 -0800
@@ -1459,6 +1459,8 @@
 			cookie->err_rc = NS_LDAP_INVALID_PARAM;
 			return (-1);
 		} else {
+			if (cookie->filter)
+				free(cookie->filter);
 			cookie->filter = strdup(cookie->i_filter);
 			if (cookie->filter == NULL) {
 				cookie->err_rc = NS_LDAP_MEMORY;
@@ -1466,6 +1468,8 @@
 			}
 		}
 	} else {
+		if (cookie->filter)
+			free(cookie->filter);
 		cookie->filter = strdup(filter);
 		free(filter);
 		if (cookie->filter == NULL) {
@@ -1517,6 +1521,8 @@
 		}
 		str = ((char **)param)[0];
 		baselen += strlen(str)+1;
+		if (cookie->basedn)
+			free(cookie->basedn);
 		cookie->basedn = (char *)malloc(baselen);
 		if (cookie->basedn == NULL) {
 			cookie->err_rc = NS_LDAP_MEMORY;
@@ -1526,6 +1532,8 @@
 		(void) strcat(cookie->basedn, str);
 		(void) __ns_ldap_freeParam(&param);
 	} else {
+		if (cookie->basedn)
+			free(cookie->basedn);
 		cookie->basedn = strdup(dptr->basedn);
 	}
 	return (0);