svn commit: samba r18586 - in branches/SAMBA_4_0/source/lib/socket_wrapper: .

tridge at samba.org tridge at samba.org
Sat Sep 16 17:57:50 GMT 2006


Author: tridge
Date: 2006-09-16 17:57:50 +0000 (Sat, 16 Sep 2006)
New Revision: 18586

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=18586

Log:

fixed a potential fd and memory leak in the socket_wrapper code

Modified:
   branches/SAMBA_4_0/source/lib/socket_wrapper/socket_wrapper.c


Changeset:
Modified: branches/SAMBA_4_0/source/lib/socket_wrapper/socket_wrapper.c
===================================================================
--- branches/SAMBA_4_0/source/lib/socket_wrapper/socket_wrapper.c	2006-09-16 17:26:55 UTC (rev 18585)
+++ branches/SAMBA_4_0/source/lib/socket_wrapper/socket_wrapper.c	2006-09-16 17:57:50 UTC (rev 18586)
@@ -494,7 +494,10 @@
 
 	ret = sockaddr_convert_from_un(parent_si, &un_addr, un_addrlen,
 				       parent_si->family, addr, addrlen);
-	if (ret == -1) return ret;
+	if (ret == -1) {
+		close(fd);
+		return ret;
+	}
 
 	child_si = malloc(sizeof(struct socket_info));
 	memset(child_si, 0, sizeof(*child_si));
@@ -506,11 +509,19 @@
 	child_si->bound = 1;
 
 	ret = real_getsockname(fd, (struct sockaddr *)&un_my_addr, &un_my_addrlen);
-	if (ret == -1) return ret;
+	if (ret == -1) {
+		free(child_si);
+		close(fd);
+		return ret;
+	}
 
 	ret = sockaddr_convert_from_un(child_si, &un_my_addr, un_my_addrlen,
 				       child_si->family, &my_addr, &my_addrlen);
-	if (ret == -1) return ret;
+	if (ret == -1) {
+		free(child_si);
+		close(fd);
+		return ret;
+	}
 
 	child_si->myname_len = my_addrlen;
 	child_si->myname = sockaddr_dup(&my_addr, my_addrlen);



More information about the samba-cvs mailing list