0
0
mirror of https://github.com/OpenVPN/openvpn.git synced 2024-09-20 12:02:28 +02:00

Fix socket related functions using int instead of socket_descriptor_t

On windows the SOCKET type is a UINT_PTR, which is a 64 bit pointer,
so using an int worked so far but is actually quite wrong.

Signed-off-by: Arne Schwabe <arne@rfc2549.org>
Acked-by: Gert Doering <gert@greenie.muc.de>
Message-Id: <20210324222330.455-3-arne@rfc2549.org>
URL: https://www.mail-archive.com/openvpn-devel@lists.sourceforge.net/msg21806.html
Signed-off-by: Gert Doering <gert@greenie.muc.de>
This commit is contained in:
Arne Schwabe 2021-03-24 23:23:29 +01:00 committed by Gert Doering
parent 7fc608da4e
commit e756e12adb
5 changed files with 19 additions and 19 deletions

View File

@ -36,7 +36,7 @@
/* Set a file descriptor to non-blocking */ /* Set a file descriptor to non-blocking */
bool bool
set_nonblock_action(int fd) set_nonblock_action(socket_descriptor_t fd)
{ {
#ifdef _WIN32 #ifdef _WIN32
u_long arg = 1; u_long arg = 1;
@ -55,7 +55,7 @@ set_nonblock_action(int fd)
/* Set a file descriptor to not be passed across execs */ /* Set a file descriptor to not be passed across execs */
bool bool
set_cloexec_action(int fd) set_cloexec_action(socket_descriptor_t fd)
{ {
#ifndef _WIN32 #ifndef _WIN32
if (fcntl(fd, F_SETFD, FD_CLOEXEC) < 0) if (fcntl(fd, F_SETFD, FD_CLOEXEC) < 0)
@ -68,7 +68,7 @@ set_cloexec_action(int fd)
/* Set a file descriptor to non-blocking */ /* Set a file descriptor to non-blocking */
void void
set_nonblock(int fd) set_nonblock(socket_descriptor_t fd)
{ {
if (!set_nonblock_action(fd)) if (!set_nonblock_action(fd))
{ {
@ -78,7 +78,7 @@ set_nonblock(int fd)
/* Set a file descriptor to not be passed across execs */ /* Set a file descriptor to not be passed across execs */
void void
set_cloexec(int fd) set_cloexec(socket_descriptor_t fd)
{ {
if (!set_cloexec_action(fd)) if (!set_cloexec_action(fd))
{ {

View File

@ -28,16 +28,16 @@
#include "error.h" #include "error.h"
#include "syshead.h" #include "syshead.h"
bool set_nonblock_action(int fd); bool set_nonblock_action(socket_descriptor_t fd);
bool set_cloexec_action(int fd); bool set_cloexec_action(socket_descriptor_t fd);
void set_nonblock(int fd); void set_nonblock(socket_descriptor_t fd);
void set_cloexec(int fd); void set_cloexec(socket_descriptor_t fd);
static inline void static inline void
openvpn_fd_set(int fd, fd_set *setp) openvpn_fd_set(socket_descriptor_t fd, fd_set *setp)
{ {
#ifndef _WIN32 /* The Windows FD_SET() implementation does not overflow */ #ifndef _WIN32 /* The Windows FD_SET() implementation does not overflow */
ASSERT(fd >= 0 && fd < FD_SETSIZE); ASSERT(fd >= 0 && fd < FD_SETSIZE);

View File

@ -166,7 +166,7 @@ frame_print(const struct frame *frame,
#define MTUDISC_NOT_SUPPORTED_MSG "--mtu-disc is not supported on this OS" #define MTUDISC_NOT_SUPPORTED_MSG "--mtu-disc is not supported on this OS"
void void
set_mtu_discover_type(int sd, int mtu_type, sa_family_t proto_af) set_mtu_discover_type(socket_descriptor_t sd, int mtu_type, sa_family_t proto_af)
{ {
if (mtu_type >= 0) if (mtu_type >= 0)
{ {

View File

@ -209,7 +209,7 @@ void frame_print(const struct frame *frame,
int level, int level,
const char *prefix); const char *prefix);
void set_mtu_discover_type(int sd, int mtu_type, sa_family_t proto_af); void set_mtu_discover_type(socket_descriptor_t sd, int mtu_type, sa_family_t proto_af);
int translate_mtu_discover_type_name(const char *name); int translate_mtu_discover_type_name(const char *name);

View File

@ -846,7 +846,7 @@ mac_addr_safe(const char *mac_addr)
} }
static int static int
socket_get_sndbuf(int sd) socket_get_sndbuf(socket_descriptor_t sd)
{ {
#if defined(HAVE_GETSOCKOPT) && defined(SOL_SOCKET) && defined(SO_SNDBUF) #if defined(HAVE_GETSOCKOPT) && defined(SOL_SOCKET) && defined(SO_SNDBUF)
int val; int val;
@ -863,7 +863,7 @@ socket_get_sndbuf(int sd)
} }
static void static void
socket_set_sndbuf(int sd, int size) socket_set_sndbuf(socket_descriptor_t sd, int size)
{ {
#if defined(HAVE_SETSOCKOPT) && defined(SOL_SOCKET) && defined(SO_SNDBUF) #if defined(HAVE_SETSOCKOPT) && defined(SOL_SOCKET) && defined(SO_SNDBUF)
if (setsockopt(sd, SOL_SOCKET, SO_SNDBUF, (void *) &size, sizeof(size)) != 0) if (setsockopt(sd, SOL_SOCKET, SO_SNDBUF, (void *) &size, sizeof(size)) != 0)
@ -874,7 +874,7 @@ socket_set_sndbuf(int sd, int size)
} }
static int static int
socket_get_rcvbuf(int sd) socket_get_rcvbuf(socket_descriptor_t sd)
{ {
#if defined(HAVE_GETSOCKOPT) && defined(SOL_SOCKET) && defined(SO_RCVBUF) #if defined(HAVE_GETSOCKOPT) && defined(SOL_SOCKET) && defined(SO_RCVBUF)
int val; int val;
@ -891,7 +891,7 @@ socket_get_rcvbuf(int sd)
} }
static bool static bool
socket_set_rcvbuf(int sd, int size) socket_set_rcvbuf(socket_descriptor_t sd, int size)
{ {
#if defined(HAVE_SETSOCKOPT) && defined(SOL_SOCKET) && defined(SO_RCVBUF) #if defined(HAVE_SETSOCKOPT) && defined(SOL_SOCKET) && defined(SO_RCVBUF)
if (setsockopt(sd, SOL_SOCKET, SO_RCVBUF, (void *) &size, sizeof(size)) != 0) if (setsockopt(sd, SOL_SOCKET, SO_RCVBUF, (void *) &size, sizeof(size)) != 0)
@ -904,7 +904,7 @@ socket_set_rcvbuf(int sd, int size)
} }
static void static void
socket_set_buffers(int fd, const struct socket_buffer_size *sbs) socket_set_buffers(socket_descriptor_t fd, const struct socket_buffer_size *sbs)
{ {
if (sbs) if (sbs)
{ {
@ -934,7 +934,7 @@ socket_set_buffers(int fd, const struct socket_buffer_size *sbs)
*/ */
static bool static bool
socket_set_tcp_nodelay(int sd, int state) socket_set_tcp_nodelay(socket_descriptor_t sd, int state)
{ {
#if defined(_WIN32) || (defined(HAVE_SETSOCKOPT) && defined(IPPROTO_TCP) && defined(TCP_NODELAY)) #if defined(_WIN32) || (defined(HAVE_SETSOCKOPT) && defined(IPPROTO_TCP) && defined(TCP_NODELAY))
if (setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (void *) &state, sizeof(state)) != 0) if (setsockopt(sd, IPPROTO_TCP, TCP_NODELAY, (void *) &state, sizeof(state)) != 0)
@ -954,7 +954,7 @@ socket_set_tcp_nodelay(int sd, int state)
} }
static inline void static inline void
socket_set_mark(int sd, int mark) socket_set_mark(socket_descriptor_t sd, int mark)
{ {
#if defined(TARGET_LINUX) && HAVE_DECL_SO_MARK #if defined(TARGET_LINUX) && HAVE_DECL_SO_MARK
if (mark && setsockopt(sd, SOL_SOCKET, SO_MARK, (void *) &mark, sizeof(mark)) != 0) if (mark && setsockopt(sd, SOL_SOCKET, SO_MARK, (void *) &mark, sizeof(mark)) != 0)
@ -965,7 +965,7 @@ socket_set_mark(int sd, int mark)
} }
static bool static bool
socket_set_flags(int sd, unsigned int sockflags) socket_set_flags(socket_descriptor_t sd, unsigned int sockflags)
{ {
if (sockflags & SF_TCP_NODELAY) if (sockflags & SF_TCP_NODELAY)
{ {