The branch, master has been updated via afb5cee6e78 s3:smbd: Fix strict aliasing in get_socket_port() from 811e2f55290 GPO: Add rsop output for Messages policy
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit afb5cee6e783048fccc1f2d8fed462adecce4d9a Author: Andreas Schneider <a...@samba.org> Date: Thu Apr 2 14:16:10 2020 +0200 s3:smbd: Fix strict aliasing in get_socket_port() Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Thu Aug 27 21:59:17 UTC 2020 on sn-devel-184 ----------------------------------------------------------------------- Summary of changes: source3/smbd/reply.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) Changeset truncated at 500 lines: diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index 63d62a88a46..debdb8487b6 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -549,14 +549,15 @@ bool check_fsp_ntquota_handle(connection_struct *conn, struct smb_request *req, static int get_socket_port(int fd) { - struct sockaddr_storage sa; - socklen_t length = sizeof(sa); + struct samba_sockaddr saddr = { + .sa_socklen = sizeof(struct sockaddr_storage), + }; if (fd == -1) { return -1; } - if (getsockname(fd, (struct sockaddr *)&sa, &length) < 0) { + if (getsockname(fd, &saddr.u.sa, &saddr.sa_socklen) < 0) { int level = (errno == ENOTCONN) ? 2 : 0; DEBUG(level, ("getsockname failed. Error was %s\n", strerror(errno))); @@ -564,14 +565,12 @@ static int get_socket_port(int fd) } #if defined(HAVE_IPV6) - if (sa.ss_family == AF_INET6) { - struct sockaddr_in6 *sa_in6 = (struct sockaddr_in6 *)&sa; - return ntohs(sa_in6->sin6_port); + if (saddr.u.sa.sa_family == AF_INET6) { + return ntohs(saddr.u.in6.sin6_port); } #endif - if (sa.ss_family == AF_INET) { - struct sockaddr_in *sa_in = (struct sockaddr_in *)&sa; - return ntohs(sa_in->sin_port); + if (saddr.u.sa.sa_family == AF_INET) { + return ntohs(saddr.u.in.sin_port); } return -1; } -- Samba Shared Repository