summaryrefslogtreecommitdiffstats
path: root/source4/lib/socket/socket_unix.c
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2013-07-24 10:19:26 +1200
committerAndrew Bartlett <abartlet@samba.org>2013-07-24 14:37:43 +0200
commit077dfd0a89a854c21b91b0f871d034fd9fe82a9a (patch)
tree54d3716df76f21319db8f144b52f8a82639392c6 /source4/lib/socket/socket_unix.c
parenta7801db32afb25cc88f171d9b8896b2f663ba351 (diff)
downloadsamba-077dfd0a89a854c21b91b0f871d034fd9fe82a9a.tar.gz
samba-077dfd0a89a854c21b91b0f871d034fd9fe82a9a.tar.xz
samba-077dfd0a89a854c21b91b0f871d034fd9fe82a9a.zip
s4-lib/socket: Allocate a the larger sockaddr_un and not just a sockaddr_in in unixdom_get_my_addr()
This caused crashes in _tsocket_address_bsd_from_sockaddr() when we read past the end of the allocation. (similar to commit e9ae36e9683372b86f1efbd29904722a33fea083) Bug: https://bugzilla.samba.org/show_bug.cgi?id=10042 Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Andrew Bartlett <abartlet@samba.org> Autobuild-User(master): Andrew Bartlett <abartlet@samba.org> Autobuild-Date(master): Wed Jul 24 14:37:43 CEST 2013 on sn-devel-104
Diffstat (limited to 'source4/lib/socket/socket_unix.c')
-rw-r--r--source4/lib/socket/socket_unix.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/source4/lib/socket/socket_unix.c b/source4/lib/socket/socket_unix.c
index 3aa5440242f..6876e395ed6 100644
--- a/source4/lib/socket/socket_unix.c
+++ b/source4/lib/socket/socket_unix.c
@@ -362,7 +362,7 @@ static struct socket_address *unixdom_get_peer_addr(struct socket_context *sock,
static struct socket_address *unixdom_get_my_addr(struct socket_context *sock, TALLOC_CTX *mem_ctx)
{
- struct sockaddr_in *local_addr;
+ struct sockaddr_un *local_addr;
socklen_t len = sizeof(*local_addr);
struct socket_address *local;
int ret;
@@ -373,7 +373,7 @@ static struct socket_address *unixdom_get_my_addr(struct socket_context *sock, T
}
local->family = sock->backend_name;
- local_addr = talloc(local, struct sockaddr_in);
+ local_addr = talloc(local, struct sockaddr_un);
if (!local_addr) {
talloc_free(local);
return NULL;