summaryrefslogtreecommitdiffstats
path: root/lib/libssl/src
diff options
context:
space:
mode:
authorderaadt <deraadt@openbsd.org>2014-04-13 23:31:36 +0000
committerderaadt <deraadt@openbsd.org>2014-04-13 23:31:36 +0000
commit9ee38ff1a26b740c31575c2d831852c20a6cf75f (patch)
tree6e07d809c567255896d58f75eb645a07412f94af /lib/libssl/src
parentcompress code by turning four line comments into one line comments. (diff)
downloadwireguard-openbsd-9ee38ff1a26b740c31575c2d831852c20a6cf75f.tar.xz
wireguard-openbsd-9ee38ff1a26b740c31575c2d831852c20a6cf75f.zip
Remove various horrible socket syscall wrappers, especially SHUTDOWN*
which did shutdown + close, all nasty and surprising. Use the raw syscalls that everyone knows the behaviour of. ok beck matthew
Diffstat (limited to 'lib/libssl/src')
-rw-r--r--lib/libssl/src/apps/s_client.c22
-rw-r--r--lib/libssl/src/apps/s_server.c12
-rw-r--r--lib/libssl/src/apps/s_socket.c21
-rw-r--r--lib/libssl/src/apps/s_time.c12
-rw-r--r--lib/libssl/src/crypto/bio/b_sock.c42
-rw-r--r--lib/libssl/src/crypto/bio/bss_acpt.c18
-rw-r--r--lib/libssl/src/crypto/bio/bss_conn.c24
-rw-r--r--lib/libssl/src/crypto/bio/bss_dgram.c26
-rw-r--r--lib/libssl/src/crypto/bio/bss_fd.c6
-rw-r--r--lib/libssl/src/crypto/bio/bss_file.c6
-rw-r--r--lib/libssl/src/crypto/bio/bss_sock.c10
-rw-r--r--lib/libssl/src/crypto/err/err.c2
-rw-r--r--lib/libssl/src/e_os.h30
13 files changed, 112 insertions, 119 deletions
diff --git a/lib/libssl/src/apps/s_client.c b/lib/libssl/src/apps/s_client.c
index 7559dfc113e..f7885ad21d2 100644
--- a/lib/libssl/src/apps/s_client.c
+++ b/lib/libssl/src/apps/s_client.c
@@ -1272,8 +1272,9 @@ re_start:
if (init_client(&s,host,port,socket_type,af) == 0)
{
- BIO_printf(bio_err,"connect:errno=%d\n",get_last_socket_error());
- SHUTDOWN(s);
+ BIO_printf(bio_err,"connect:errno=%d\n",errno);
+ shutdown(s, SHUT_RD);
+ close(s);
goto end;
}
BIO_printf(bio_c_out,"CONNECTED(%08X)\n",s);
@@ -1299,8 +1300,9 @@ re_start:
if (getsockname(s, &peer, (void *)&peerlen) < 0)
{
BIO_printf(bio_err, "getsockname:errno=%d\n",
- get_last_socket_error());
- SHUTDOWN(s);
+ errno);
+ shutdown(s, SHUT_RD);
+ close(s);
goto end;
}
@@ -1567,7 +1569,8 @@ SSL_set_tlsext_status_ids(con, ids);
BIO_printf(bio_c_out,"drop connection and then reconnect\n");
SSL_shutdown(con);
SSL_set_connect_state(con);
- SHUTDOWN(SSL_get_fd(con));
+ shutdown(SSL_get_fd(con), SHUT_RD);
+ close(SSL_get_fd(con));
goto re_start;
}
}
@@ -1663,7 +1666,7 @@ SSL_set_tlsext_status_ids(con, ids);
if ( i < 0)
{
BIO_printf(bio_err,"bad select %d\n",
- get_last_socket_error());
+ errno);
goto shut;
/* goto end; */
}
@@ -1728,7 +1731,7 @@ SSL_set_tlsext_status_ids(con, ids);
if ((k != 0) || (cbuf_len != 0))
{
BIO_printf(bio_err,"write:errno=%d\n",
- get_last_socket_error());
+ errno);
goto shut;
}
else
@@ -1812,7 +1815,7 @@ printf("read=%d pending=%d peek=%d\n",k,SSL_pending(con),SSL_peek(con,zbuf,10240
BIO_printf(bio_c_out,"read X BLOCK\n");
break;
case SSL_ERROR_SYSCALL:
- ret=get_last_socket_error();
+ ret=errno;
BIO_printf(bio_err,"read:errno=%d\n",ret);
goto shut;
case SSL_ERROR_ZERO_RETURN:
@@ -1905,7 +1908,8 @@ shut:
if (in_init)
print_stuff(bio_c_out,con,full_log);
SSL_shutdown(con);
- SHUTDOWN(SSL_get_fd(con));
+ shutdown(SSL_get_fd(con), SHUT_RD);
+ close(SSL_get_fd(con));
end:
if (con != NULL)
{
diff --git a/lib/libssl/src/apps/s_server.c b/lib/libssl/src/apps/s_server.c
index a36b1a3ad6a..15070a44c17 100644
--- a/lib/libssl/src/apps/s_server.c
+++ b/lib/libssl/src/apps/s_server.c
@@ -2182,7 +2182,8 @@ static int sv_body(char *hostname, int s, unsigned char *context)
if ((i <= 0) || (buf[0] == 'Q'))
{
BIO_printf(bio_s_out,"DONE\n");
- SHUTDOWN(s);
+ shutdown(s, SHUT_RD);
+ close(s);
close_accept_socket();
ret= -11;
goto err;
@@ -2190,8 +2191,10 @@ static int sv_body(char *hostname, int s, unsigned char *context)
if ((i <= 0) || (buf[0] == 'q'))
{
BIO_printf(bio_s_out,"DONE\n");
- if (SSL_version(con) != DTLS1_VERSION)
- SHUTDOWN(s);
+ if (SSL_version(con) != DTLS1_VERSION) {
+ shutdown(s, SHUT_RD);
+ close(s);
+ }
/* close_accept_socket();
ret= -11;*/
goto err;
@@ -2376,7 +2379,8 @@ static void close_accept_socket(void)
BIO_printf(bio_err,"shutdown accept socket\n");
if (accept_socket >= 0)
{
- SHUTDOWN2(accept_socket);
+ shutdown(accept_socket, SHUT_RDWR);
+ close(accept_socket);
}
}
diff --git a/lib/libssl/src/apps/s_socket.c b/lib/libssl/src/apps/s_socket.c
index 24880a9a08b..8c4421a9304 100644
--- a/lib/libssl/src/apps/s_socket.c
+++ b/lib/libssl/src/apps/s_socket.c
@@ -258,7 +258,7 @@ int init_client(int *sock, char *host, char *port, int type, int af)
for (ai = ai_top; ai != NULL; ai = ai->ai_next)
{
s=socket(ai->ai_family, ai->ai_socktype, ai->ai_protocol);
- if (s == INVALID_SOCKET) { continue; }
+ if (s == -1) { continue; }
#ifndef OPENSSL_SYS_MPE
if (type == SOCK_STREAM)
{
@@ -299,7 +299,8 @@ int do_server(int port, int type, int *ret, int (*cb)(char *hostname, int s, uns
{
if (do_accept(accept_socket,&sock,&name) == 0)
{
- SHUTDOWN(accept_socket);
+ shutdown(accept_socket, SHUT_RD);
+ close(accept_socket);
return(0);
}
}
@@ -307,11 +308,14 @@ int do_server(int port, int type, int *ret, int (*cb)(char *hostname, int s, uns
sock = accept_socket;
i=(*cb)(name,sock, context);
if (name != NULL) OPENSSL_free(name);
- if (type==SOCK_STREAM)
- SHUTDOWN2(sock);
+ if (type==SOCK_STREAM) {
+ shutdown(sock, SHUT_RDWR);
+ close(sock);
+ }
if (i < 0)
{
- SHUTDOWN2(accept_socket);
+ shutdown(accept_socket, SHUT_RDWR);
+ close(accept_socket);
return(i);
}
}
@@ -343,7 +347,7 @@ static int init_server_long(int *sock, int port, char *ip, int type)
else /* type == SOCK_DGRAM */
s=socket(AF_INET, SOCK_DGRAM,IPPROTO_UDP);
- if (s == INVALID_SOCKET) goto err;
+ if (s == -1) goto err;
#if defined SOL_SOCKET && defined SO_REUSEADDR
{
int j = 1;
@@ -365,7 +369,8 @@ static int init_server_long(int *sock, int port, char *ip, int type)
err:
if ((ret == 0) && (s != -1))
{
- SHUTDOWN(s);
+ shutdown(s, SHUT_RD);
+ close(s);
}
return(ret);
}
@@ -397,7 +402,7 @@ redoit:
* have a cast then you can either go for (int *) or (void *).
*/
ret=accept(acc_sock,(struct sockaddr *)&from,(void *)&len);
- if (ret == INVALID_SOCKET)
+ if (ret == -1)
{
#if defined(OPENSSL_SYS_WINDOWS) || (defined(OPENSSL_SYS_NETWARE) && !defined(NETWARE_BSDSOCK))
int i;
diff --git a/lib/libssl/src/apps/s_time.c b/lib/libssl/src/apps/s_time.c
index 6d78afefd2f..8a5e0761f71 100644
--- a/lib/libssl/src/apps/s_time.c
+++ b/lib/libssl/src/apps/s_time.c
@@ -88,9 +88,6 @@
#undef PROG
#define PROG s_time_main
-#undef ioctl
-#define ioctl ioctlsocket
-
#define SSL_CONNECT_NAME "localhost:4433"
/*#define TEST_CERT "client.pem" */ /* no default cert. */
@@ -424,7 +421,8 @@ int MAIN(int argc, char **argv)
#else
SSL_shutdown(scon);
#endif
- SHUTDOWN2(SSL_get_fd(scon));
+ shutdown(SSL_get_fd(scon), SHUT_RDWR);
+ close(SSL_get_fd(scon));
nConn += 1;
if (SSL_session_reused(scon))
@@ -478,7 +476,8 @@ next:
#else
SSL_shutdown(scon);
#endif
- SHUTDOWN2(SSL_get_fd(scon));
+ shutdown(SSL_get_fd(scon), SHUT_RDWR);
+ close(SSL_get_fd(scon));
nConn = 0;
totalTime = 0.0;
@@ -517,7 +516,8 @@ next:
#else
SSL_shutdown(scon);
#endif
- SHUTDOWN2(SSL_get_fd(scon));
+ shutdown(SSL_get_fd(scon), SHUT_RDWR);
+ close(SSL_get_fd(scon));
nConn += 1;
if (SSL_session_reused(scon))
diff --git a/lib/libssl/src/crypto/bio/b_sock.c b/lib/libssl/src/crypto/bio/b_sock.c
index 41f958be710..779acbaaf5a 100644
--- a/lib/libssl/src/crypto/bio/b_sock.c
+++ b/lib/libssl/src/crypto/bio/b_sock.c
@@ -221,7 +221,7 @@ int BIO_get_port(const char *str, unsigned short *port_ptr)
#endif
else
{
- SYSerr(SYS_F_GETSERVBYNAME,get_last_socket_error());
+ SYSerr(SYS_F_GETSERVBYNAME,errno);
ERR_add_error_data(3,"service='",str,"'");
return(0);
}
@@ -549,7 +549,7 @@ int BIO_socket_ioctl(int fd, long type, void *arg)
int i;
#ifdef __DJGPP__
- i=ioctlsocket(fd,type,(char *)arg);
+ i=ioctl(fd,type,(char *)arg);
#else
# if defined(OPENSSL_SYS_VMS)
/* 2011-02-18 SMS.
@@ -574,10 +574,10 @@ int BIO_socket_ioctl(int fd, long type, void *arg)
# define ARG arg
# endif /* defined(OPENSSL_SYS_VMS) [else] */
- i=ioctlsocket(fd,type,ARG);
+ i=ioctl(fd,type,ARG);
#endif /* __DJGPP__ */
if (i < 0)
- SYSerr(SYS_F_IOCTLSOCKET,get_last_socket_error());
+ SYSerr(SYS_F_IOCTLSOCKET,errno);
return(i);
}
#endif /* __VMS_VER */
@@ -629,7 +629,7 @@ int BIO_get_accept_socket(char *host, int bind_mode)
struct sockaddr_in6 sa_in6;
#endif
} server,client;
- int s=INVALID_SOCKET,cs,addrlen;
+ int s=-1,cs,addrlen;
unsigned char ip[4];
unsigned short port;
char *str=NULL,*e;
@@ -637,9 +637,9 @@ int BIO_get_accept_socket(char *host, int bind_mode)
unsigned long l;
int err_num;
- if (BIO_sock_init() != 1) return(INVALID_SOCKET);
+ if (BIO_sock_init() != 1) return(-1);
- if ((str=BUF_strdup(host)) == NULL) return(INVALID_SOCKET);
+ if ((str=BUF_strdup(host)) == NULL) return(-1);
h=p=NULL;
h=str;
@@ -736,9 +736,9 @@ int BIO_get_accept_socket(char *host, int bind_mode)
again:
s=socket(server.sa.sa_family,SOCK_STREAM,SOCKET_PROTOCOL);
- if (s == INVALID_SOCKET)
+ if (s == -1)
{
- SYSerr(SYS_F_SOCKET,get_last_socket_error());
+ SYSerr(SYS_F_SOCKET,errno);
ERR_add_error_data(3,"port='",host,"'");
BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET,BIO_R_UNABLE_TO_CREATE_SOCKET);
goto err;
@@ -756,7 +756,7 @@ again:
if (bind(s,&server.sa,addrlen) == -1)
{
#ifdef SO_REUSEADDR
- err_num=get_last_socket_error();
+ err_num=errno;
if ((bind_mode == BIO_BIND_REUSEADDR_IF_UNUSED) &&
#ifdef OPENSSL_SYS_WINDOWS
/* Some versions of Windows define EADDRINUSE to
@@ -785,15 +785,15 @@ again:
else goto err;
}
cs=socket(client.sa.sa_family,SOCK_STREAM,SOCKET_PROTOCOL);
- if (cs != INVALID_SOCKET)
+ if (cs != -1)
{
int ii;
ii=connect(cs,&client.sa,addrlen);
- closesocket(cs);
- if (ii == INVALID_SOCKET)
+ close(cs);
+ if (ii == -1)
{
bind_mode=BIO_BIND_REUSEADDR;
- closesocket(s);
+ close(s);
goto again;
}
/* else error */
@@ -808,7 +808,7 @@ again:
}
if (listen(s,MAX_LISTEN) == -1)
{
- SYSerr(SYS_F_BIND,get_last_socket_error());
+ SYSerr(SYS_F_BIND,errno);
ERR_add_error_data(3,"port='",host,"'");
BIOerr(BIO_F_BIO_GET_ACCEPT_SOCKET,BIO_R_UNABLE_TO_LISTEN_SOCKET);
goto err;
@@ -816,17 +816,17 @@ again:
ret=1;
err:
if (str != NULL) OPENSSL_free(str);
- if ((ret == 0) && (s != INVALID_SOCKET))
+ if ((ret == 0) && (s != -1))
{
- closesocket(s);
- s= INVALID_SOCKET;
+ close(s);
+ s= -1;
}
return(s);
}
int BIO_accept(int sock, char **addr)
{
- int ret=INVALID_SOCKET;
+ int ret=-1;
unsigned long l;
unsigned short port;
char *p;
@@ -873,10 +873,10 @@ int BIO_accept(int sock, char **addr)
sa.len.i = (int)sa.len.s;
/* use sa.len.i from this point */
}
- if (ret == INVALID_SOCKET)
+ if (ret == -1)
{
if(BIO_sock_should_retry(ret)) return -2;
- SYSerr(SYS_F_ACCEPT,get_last_socket_error());
+ SYSerr(SYS_F_ACCEPT,errno);
BIOerr(BIO_F_BIO_ACCEPT,BIO_R_ACCEPT_ERROR);
goto end;
}
diff --git a/lib/libssl/src/crypto/bio/bss_acpt.c b/lib/libssl/src/crypto/bio/bss_acpt.c
index 5d49e1a72bc..5507a53a2fa 100644
--- a/lib/libssl/src/crypto/bio/bss_acpt.c
+++ b/lib/libssl/src/crypto/bio/bss_acpt.c
@@ -131,7 +131,7 @@ static int acpt_new(BIO *bi)
BIO_ACCEPT *ba;
bi->init=0;
- bi->num=INVALID_SOCKET;
+ bi->num=-1;
bi->flags=0;
if ((ba=BIO_ACCEPT_new()) == NULL)
return(0);
@@ -149,7 +149,7 @@ static BIO_ACCEPT *BIO_ACCEPT_new(void)
return(NULL);
memset(ret,0,sizeof(BIO_ACCEPT));
- ret->accept_sock=INVALID_SOCKET;
+ ret->accept_sock=-1;
ret->bind_mode=BIO_BIND_NORMAL;
return(ret);
}
@@ -170,12 +170,12 @@ static void acpt_close_socket(BIO *bio)
BIO_ACCEPT *c;
c=(BIO_ACCEPT *)bio->ptr;
- if (c->accept_sock != INVALID_SOCKET)
+ if (c->accept_sock != -1)
{
shutdown(c->accept_sock,2);
- closesocket(c->accept_sock);
- c->accept_sock=INVALID_SOCKET;
- bio->num=INVALID_SOCKET;
+ close(c->accept_sock);
+ c->accept_sock=-1;
+ bio->num=-1;
}
}
@@ -213,14 +213,14 @@ again:
return(-1);
}
s=BIO_get_accept_socket(c->param_addr,c->bind_mode);
- if (s == INVALID_SOCKET)
+ if (s == -1)
return(-1);
if (c->accept_nbio)
{
if (!BIO_socket_nbio(s,1))
{
- closesocket(s);
+ close(s);
BIOerr(BIO_F_ACPT_STATE,BIO_R_ERROR_SETTING_NBIO_ON_ACCEPT_SOCKET);
return(-1);
}
@@ -282,7 +282,7 @@ err:
if (bio != NULL)
BIO_free(bio);
else if (s >= 0)
- closesocket(s);
+ close(s);
return(0);
/* break; */
case ACPT_S_OK:
diff --git a/lib/libssl/src/crypto/bio/bss_conn.c b/lib/libssl/src/crypto/bio/bss_conn.c
index c14727855b2..bdf540030c8 100644
--- a/lib/libssl/src/crypto/bio/bss_conn.c
+++ b/lib/libssl/src/crypto/bio/bss_conn.c
@@ -210,9 +210,9 @@ static int conn_state(BIO *b, BIO_CONNECT *c)
c->state=BIO_CONN_S_CREATE_SOCKET;
ret=socket(AF_INET,SOCK_STREAM,SOCKET_PROTOCOL);
- if (ret == INVALID_SOCKET)
+ if (ret == -1)
{
- SYSerr(SYS_F_SOCKET,get_last_socket_error());
+ SYSerr(SYS_F_SOCKET,errno);
ERR_add_error_data(4,"host=",c->param_hostname,
":",c->param_port);
BIOerr(BIO_F_CONN_STATE,BIO_R_UNABLE_TO_CREATE_SOCKET);
@@ -241,7 +241,7 @@ static int conn_state(BIO *b, BIO_CONNECT *c)
i=setsockopt(b->num,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i));
if (i < 0)
{
- SYSerr(SYS_F_SOCKET,get_last_socket_error());
+ SYSerr(SYS_F_SOCKET,errno);
ERR_add_error_data(4,"host=",c->param_hostname,
":",c->param_port);
BIOerr(BIO_F_CONN_STATE,BIO_R_KEEPALIVE);
@@ -266,7 +266,7 @@ static int conn_state(BIO *b, BIO_CONNECT *c)
}
else
{
- SYSerr(SYS_F_CONNECT,get_last_socket_error());
+ SYSerr(SYS_F_CONNECT,errno);
ERR_add_error_data(4,"host=",
c->param_hostname,
":",c->param_port);
@@ -358,7 +358,7 @@ BIO_METHOD *BIO_s_connect(void)
static int conn_new(BIO *bi)
{
bi->init=0;
- bi->num=INVALID_SOCKET;
+ bi->num=-1;
bi->flags=0;
if ((bi->ptr=(char *)BIO_CONNECT_new()) == NULL)
return(0);
@@ -371,13 +371,13 @@ static void conn_close_socket(BIO *bio)
BIO_CONNECT *c;
c=(BIO_CONNECT *)bio->ptr;
- if (bio->num != INVALID_SOCKET)
+ if (bio->num != -1)
{
/* Only do a shutdown if things were established */
if (c->state == BIO_CONN_S_OK)
shutdown(bio->num,2);
- closesocket(bio->num);
- bio->num=INVALID_SOCKET;
+ close(bio->num);
+ bio->num=-1;
}
}
@@ -414,8 +414,8 @@ static int conn_read(BIO *b, char *out, int outl)
if (out != NULL)
{
- clear_socket_error();
- ret=readsocket(b->num,out,outl);
+ errno = 0;
+ ret=read(b->num,out,outl);
BIO_clear_retry_flags(b);
if (ret <= 0)
{
@@ -438,8 +438,8 @@ static int conn_write(BIO *b, const char *in, int inl)
if (ret <= 0) return(ret);
}
- clear_socket_error();
- ret=writesocket(b->num,in,inl);
+ errno = 0;
+ ret=write(b->num,in,inl);
BIO_clear_retry_flags(b);
if (ret <= 0)
{
diff --git a/lib/libssl/src/crypto/bio/bss_dgram.c b/lib/libssl/src/crypto/bio/bss_dgram.c
index f39f94f7fe4..d09c0fc33e3 100644
--- a/lib/libssl/src/crypto/bio/bss_dgram.c
+++ b/lib/libssl/src/crypto/bio/bss_dgram.c
@@ -383,7 +383,7 @@ static int dgram_read(BIO *b, char *out, int outl)
if (out != NULL)
{
- clear_socket_error();
+ errno = 0;
memset(&sa.peer, 0x00, sizeof(sa.peer));
dgram_adjust_rcv_timeout(b);
ret=recvfrom(b->num,out,outl,0,&sa.peer.sa,(void *)&sa.len);
@@ -402,7 +402,7 @@ static int dgram_read(BIO *b, char *out, int outl)
if (BIO_dgram_should_retry(ret))
{
BIO_set_retry_read(b);
- data->_errno = get_last_socket_error();
+ data->_errno = errno;
}
}
@@ -415,10 +415,10 @@ static int dgram_write(BIO *b, const char *in, int inl)
{
int ret;
bio_dgram_data *data = (bio_dgram_data *)b->ptr;
- clear_socket_error();
+ errno = 0;
if ( data->connected )
- ret=writesocket(b->num,in,inl);
+ ret=write(b->num,in,inl);
else
{
int peerlen = sizeof(data->peer);
@@ -442,7 +442,7 @@ static int dgram_write(BIO *b, const char *in, int inl)
if (BIO_dgram_should_retry(ret))
{
BIO_set_retry_write(b);
- data->_errno = get_last_socket_error();
+ data->_errno = errno;
#if 0 /* higher layers are responsible for querying MTU, if necessary */
if ( data->_errno == EMSGSIZE)
@@ -1018,7 +1018,7 @@ static int dgram_sctp_read(BIO *b, char *out, int outl)
if (out != NULL)
{
- clear_socket_error();
+ errno = 0;
do
{
@@ -1180,7 +1180,7 @@ static int dgram_sctp_read(BIO *b, char *out, int outl)
if (BIO_dgram_should_retry(ret))
{
BIO_set_retry_read(b);
- data->_errno = get_last_socket_error();
+ data->_errno = errno;
}
}
@@ -1238,7 +1238,7 @@ static int dgram_sctp_write(BIO *b, const char *in, int inl)
struct sctp_sndrcvinfo *sndrcvinfo;
#endif
- clear_socket_error();
+ errno = 0;
/* If we're send anything else than application data,
* disable all user parameters and flags.
@@ -1321,7 +1321,7 @@ static int dgram_sctp_write(BIO *b, const char *in, int inl)
if (BIO_dgram_should_retry(ret))
{
BIO_set_retry_write(b);
- data->_errno = get_last_socket_error();
+ data->_errno = errno;
}
}
return(ret);
@@ -1596,7 +1596,7 @@ int BIO_dgram_sctp_wait_for_dry(BIO *b)
n = recvmsg(b->num, &msg, MSG_PEEK);
if (n <= 0)
{
- if ((n < 0) && (get_last_socket_error() != EAGAIN) && (get_last_socket_error() != EWOULDBLOCK))
+ if ((n < 0) && (errno != EAGAIN) && (errno != EWOULDBLOCK))
return -1;
else
return 0;
@@ -1619,7 +1619,7 @@ int BIO_dgram_sctp_wait_for_dry(BIO *b)
n = recvmsg(b->num, &msg, 0);
if (n <= 0)
{
- if ((n < 0) && (get_last_socket_error() != EAGAIN) && (get_last_socket_error() != EWOULDBLOCK))
+ if ((n < 0) && (errno != EAGAIN) && (errno != EWOULDBLOCK))
return -1;
else
return is_dry;
@@ -1686,7 +1686,7 @@ int BIO_dgram_sctp_wait_for_dry(BIO *b)
if (n <= 0)
{
- if ((n < 0) && (get_last_socket_error() != EAGAIN) && (get_last_socket_error() != EWOULDBLOCK))
+ if ((n < 0) && (errno != EAGAIN) && (errno != EWOULDBLOCK))
return -1;
else
return is_dry;
@@ -1773,7 +1773,7 @@ static int BIO_dgram_should_retry(int i)
if ((i == 0) || (i == -1))
{
- err=get_last_socket_error();
+ err=errno;
#if defined(OPENSSL_SYS_WINDOWS)
/* If the socket return value (i) is -1
diff --git a/lib/libssl/src/crypto/bio/bss_fd.c b/lib/libssl/src/crypto/bio/bss_fd.c
index d1bf85aae17..ab18a56310d 100644
--- a/lib/libssl/src/crypto/bio/bss_fd.c
+++ b/lib/libssl/src/crypto/bio/bss_fd.c
@@ -147,7 +147,7 @@ static int fd_read(BIO *b, char *out,int outl)
if (out != NULL)
{
- clear_sys_error();
+ errno = 0;
ret=UP_read(b->num,out,outl);
BIO_clear_retry_flags(b);
if (ret <= 0)
@@ -162,7 +162,7 @@ static int fd_read(BIO *b, char *out,int outl)
static int fd_write(BIO *b, const char *in, int inl)
{
int ret;
- clear_sys_error();
+ errno = 0;
ret=UP_write(b->num,in,inl);
BIO_clear_retry_flags(b);
if (ret <= 0)
@@ -257,7 +257,7 @@ int BIO_fd_should_retry(int i)
if ((i == 0) || (i == -1))
{
- err=get_last_sys_error();
+ err=errno;
#if defined(OPENSSL_SYS_WINDOWS) && 0 /* more microsoft stupidity? perhaps not? Ben 4/1/99 */
if ((i == -1) && (err == 0))
diff --git a/lib/libssl/src/crypto/bio/bss_file.c b/lib/libssl/src/crypto/bio/bss_file.c
index 4a4e747bc71..638572ab7fd 100644
--- a/lib/libssl/src/crypto/bio/bss_file.c
+++ b/lib/libssl/src/crypto/bio/bss_file.c
@@ -166,7 +166,7 @@ BIO *BIO_new_file(const char *filename, const char *mode)
#endif
if (file == NULL)
{
- SYSerr(SYS_F_FOPEN,get_last_sys_error());
+ SYSerr(SYS_F_FOPEN, errno);
ERR_add_error_data(5,"fopen('",filename,"','",mode,"')");
if (errno == ENOENT)
BIOerr(BIO_F_BIO_NEW_FILE,BIO_R_NO_SUCH_FILE);
@@ -242,7 +242,7 @@ static int file_read(BIO *b, char *out, int outl)
ret=fread(out,1,(int)outl,(FILE *)b->ptr);
if(ret == 0 && (b->flags&BIO_FLAGS_UPLINK)?UP_ferror((FILE *)b->ptr):ferror((FILE *)b->ptr))
{
- SYSerr(SYS_F_FREAD,get_last_sys_error());
+ SYSerr(SYS_F_FREAD, errno);
BIOerr(BIO_F_FILE_READ,ERR_R_SYS_LIB);
ret=-1;
}
@@ -395,7 +395,7 @@ static long file_ctrl(BIO *b, int cmd, long num, void *ptr)
fp=fopen(ptr,p);
if (fp == NULL)
{
- SYSerr(SYS_F_FOPEN,get_last_sys_error());
+ SYSerr(SYS_F_FOPEN, errno);
ERR_add_error_data(5,"fopen('",ptr,"','",p,"')");
BIOerr(BIO_F_FILE_CTRL,ERR_R_SYS_LIB);
ret=0;
diff --git a/lib/libssl/src/crypto/bio/bss_sock.c b/lib/libssl/src/crypto/bio/bss_sock.c
index 3df31938c18..07e52ec4005 100644
--- a/lib/libssl/src/crypto/bio/bss_sock.c
+++ b/lib/libssl/src/crypto/bio/bss_sock.c
@@ -138,8 +138,8 @@ static int sock_read(BIO *b, char *out, int outl)
if (out != NULL)
{
- clear_socket_error();
- ret=readsocket(b->num,out,outl);
+ errno = 0;
+ ret=read(b->num,out,outl);
BIO_clear_retry_flags(b);
if (ret <= 0)
{
@@ -154,8 +154,8 @@ static int sock_write(BIO *b, const char *in, int inl)
{
int ret;
- clear_socket_error();
- ret=writesocket(b->num,in,inl);
+ errno = 0;
+ ret=write(b->num,in,inl);
BIO_clear_retry_flags(b);
if (ret <= 0)
{
@@ -220,7 +220,7 @@ int BIO_sock_should_retry(int i)
if ((i == 0) || (i == -1))
{
- err=get_last_socket_error();
+ err=errno;
#if defined(OPENSSL_SYS_WINDOWS) && 0 /* more microsoft stupidity? perhaps not? Ben 4/1/99 */
if ((i == -1) && (err == 0))
diff --git a/lib/libssl/src/crypto/err/err.c b/lib/libssl/src/crypto/err/err.c
index fcdb244008f..0251248bafd 100644
--- a/lib/libssl/src/crypto/err/err.c
+++ b/lib/libssl/src/crypto/err/err.c
@@ -165,7 +165,7 @@ static ERR_STRING_DATA ERR_str_functs[]=
{ERR_PACK(0,SYS_F_CONNECT,0), "connect"},
{ERR_PACK(0,SYS_F_GETSERVBYNAME,0), "getservbyname"},
{ERR_PACK(0,SYS_F_SOCKET,0), "socket"},
- {ERR_PACK(0,SYS_F_IOCTLSOCKET,0), "ioctlsocket"},
+ {ERR_PACK(0,SYS_F_IOCTLSOCKET,0), "ioctl"},
{ERR_PACK(0,SYS_F_BIND,0), "bind"},
{ERR_PACK(0,SYS_F_LISTEN,0), "listen"},
{ERR_PACK(0,SYS_F_ACCEPT,0), "accept"},
diff --git a/lib/libssl/src/e_os.h b/lib/libssl/src/e_os.h
index 8c87b7aa964..047aa2a94da 100644
--- a/lib/libssl/src/e_os.h
+++ b/lib/libssl/src/e_os.h
@@ -88,15 +88,6 @@ extern "C" {
#define DEVRANDOM_EGD "/var/run/egd-pool","/dev/egd-pool","/etc/egd-pool","/etc/entropy"
#endif
-#define get_last_sys_error() errno
-#define clear_sys_error() errno=0
-#define get_last_socket_error() errno
-#define clear_socket_error() errno=0
-#define ioctlsocket(a,b,c) ioctl(a,b,c)
-#define closesocket(s) close(s)
-#define readsocket(s,b,n) read((s),(b),(n))
-#define writesocket(s,b,n) write((s),(b),(n))
-
# include <unistd.h>
# include <sys/types.h>
# define OPENSSL_CONF "openssl.cnf"
@@ -104,26 +95,15 @@ extern "C" {
# define RFILE ".rnd"
# define LIST_SEPARATOR_CHAR ':'
# define EXIT(n) exit(n)
-# define SSLeay_getpid() getpid()
#ifdef USE_SOCKETS
-# include <sys/param.h>
-# include <sys/time.h> /* Needed under linux for FD_XXX */
+# include <sys/param.h>
+# include <sys/time.h> /* Needed under linux for FD_XXX */
# include <netdb.h>
-# include <sys/socket.h>
-# ifdef FILIO_H
-# include <sys/filio.h> /* Added for FIONBIO under unixware */
-# endif
-# include <netinet/in.h>
-# include <sys/ioctl.h>
-# define SSLeay_Read(a,b,c) read((a),(b),(c))
-# define SSLeay_Write(a,b,c) write((a),(b),(c))
-# define SHUTDOWN(fd) { shutdown((fd),0); closesocket((fd)); }
-# define SHUTDOWN2(fd) { shutdown((fd),2); closesocket((fd)); }
-# ifndef INVALID_SOCKET
-# define INVALID_SOCKET (-1)
-# endif /* INVALID_SOCKET */
+# include <sys/socket.h>
+# include <netinet/in.h>
+# include <sys/ioctl.h>
#endif
/* Some IPv6 implementations are broken, disable them in known bad