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