diff options
author | 2014-04-13 23:31:36 +0000 | |
---|---|---|
committer | 2014-04-13 23:31:36 +0000 | |
commit | 9ee38ff1a26b740c31575c2d831852c20a6cf75f (patch) | |
tree | 6e07d809c567255896d58f75eb645a07412f94af /lib/libssl/src | |
parent | compress code by turning four line comments into one line comments. (diff) | |
download | wireguard-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.c | 22 | ||||
-rw-r--r-- | lib/libssl/src/apps/s_server.c | 12 | ||||
-rw-r--r-- | lib/libssl/src/apps/s_socket.c | 21 | ||||
-rw-r--r-- | lib/libssl/src/apps/s_time.c | 12 | ||||
-rw-r--r-- | lib/libssl/src/crypto/bio/b_sock.c | 42 | ||||
-rw-r--r-- | lib/libssl/src/crypto/bio/bss_acpt.c | 18 | ||||
-rw-r--r-- | lib/libssl/src/crypto/bio/bss_conn.c | 24 | ||||
-rw-r--r-- | lib/libssl/src/crypto/bio/bss_dgram.c | 26 | ||||
-rw-r--r-- | lib/libssl/src/crypto/bio/bss_fd.c | 6 | ||||
-rw-r--r-- | lib/libssl/src/crypto/bio/bss_file.c | 6 | ||||
-rw-r--r-- | lib/libssl/src/crypto/bio/bss_sock.c | 10 | ||||
-rw-r--r-- | lib/libssl/src/crypto/err/err.c | 2 | ||||
-rw-r--r-- | lib/libssl/src/e_os.h | 30 |
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 |