[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Thu Aug 27 22:00:02 UTC 2020
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 <asn at 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 <asn at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
Autobuild-User(master): Jeremy Allison <jra at 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
More information about the samba-cvs
mailing list