diff options
-rw-r--r-- | src/usr.bin/openssl/s_apps.h | 4 | ||||
-rw-r--r-- | src/usr.bin/openssl/s_server.c | 10 | ||||
-rw-r--r-- | src/usr.bin/openssl/s_socket.c | 43 |
3 files changed, 21 insertions, 36 deletions
diff --git a/src/usr.bin/openssl/s_apps.h b/src/usr.bin/openssl/s_apps.h index f535a35c39..a73c2eb1b4 100644 --- a/src/usr.bin/openssl/s_apps.h +++ b/src/usr.bin/openssl/s_apps.h | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s_apps.h,v 1.6 2021/08/29 12:33:15 tb Exp $ */ | 1 | /* $OpenBSD: s_apps.h,v 1.7 2021/12/06 11:06:58 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -119,7 +119,7 @@ extern int verify_depth; | |||
119 | extern int verify_return_error; | 119 | extern int verify_return_error; |
120 | 120 | ||
121 | int do_server(int port, int type, int *ret, | 121 | int do_server(int port, int type, int *ret, |
122 | int (*cb)(char *hostname, int s, unsigned char *context), | 122 | int (*cb)(int s, unsigned char *context), |
123 | unsigned char *context, int naccept); | 123 | unsigned char *context, int naccept); |
124 | #ifdef HEADER_X509_H | 124 | #ifdef HEADER_X509_H |
125 | int verify_callback(int ok, X509_STORE_CTX *ctx); | 125 | int verify_callback(int ok, X509_STORE_CTX *ctx); |
diff --git a/src/usr.bin/openssl/s_server.c b/src/usr.bin/openssl/s_server.c index 233b8fdced..9b06856ac9 100644 --- a/src/usr.bin/openssl/s_server.c +++ b/src/usr.bin/openssl/s_server.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s_server.c,v 1.53 2021/10/31 16:47:27 tb Exp $ */ | 1 | /* $OpenBSD: s_server.c,v 1.54 2021/12/06 11:06:58 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -180,13 +180,13 @@ | |||
180 | static void s_server_init(void); | 180 | static void s_server_init(void); |
181 | static void sv_usage(void); | 181 | static void sv_usage(void); |
182 | static void print_stats(BIO *bp, SSL_CTX *ctx); | 182 | static void print_stats(BIO *bp, SSL_CTX *ctx); |
183 | static int sv_body(char *hostname, int s, unsigned char *context); | 183 | static int sv_body(int s, unsigned char *context); |
184 | static void close_accept_socket(void); | 184 | static void close_accept_socket(void); |
185 | static int init_ssl_connection(SSL *s); | 185 | static int init_ssl_connection(SSL *s); |
186 | #ifndef OPENSSL_NO_DH | 186 | #ifndef OPENSSL_NO_DH |
187 | static DH *load_dh_param(const char *dhfile); | 187 | static DH *load_dh_param(const char *dhfile); |
188 | #endif | 188 | #endif |
189 | static int www_body(char *hostname, int s, unsigned char *context); | 189 | static int www_body(int s, unsigned char *context); |
190 | static int generate_session_id(const SSL *ssl, unsigned char *id, | 190 | static int generate_session_id(const SSL *ssl, unsigned char *id, |
191 | unsigned int *id_len); | 191 | unsigned int *id_len); |
192 | static int ssl_servername_cb(SSL *s, int *ad, void *arg); | 192 | static int ssl_servername_cb(SSL *s, int *ad, void *arg); |
@@ -1531,7 +1531,7 @@ print_stats(BIO *bio, SSL_CTX *ssl_ctx) | |||
1531 | } | 1531 | } |
1532 | 1532 | ||
1533 | static int | 1533 | static int |
1534 | sv_body(char *hostname, int s, unsigned char *context) | 1534 | sv_body(int s, unsigned char *context) |
1535 | { | 1535 | { |
1536 | char *buf = NULL; | 1536 | char *buf = NULL; |
1537 | int ret = 1; | 1537 | int ret = 1; |
@@ -1956,7 +1956,7 @@ load_dh_param(const char *dhfile) | |||
1956 | #endif | 1956 | #endif |
1957 | 1957 | ||
1958 | static int | 1958 | static int |
1959 | www_body(char *hostname, int s, unsigned char *context) | 1959 | www_body(int s, unsigned char *context) |
1960 | { | 1960 | { |
1961 | char *buf = NULL; | 1961 | char *buf = NULL; |
1962 | int ret = 1; | 1962 | int ret = 1; |
diff --git a/src/usr.bin/openssl/s_socket.c b/src/usr.bin/openssl/s_socket.c index f22c88d228..db125c1ed3 100644 --- a/src/usr.bin/openssl/s_socket.c +++ b/src/usr.bin/openssl/s_socket.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: s_socket.c,v 1.12 2021/08/29 12:33:15 tb Exp $ */ | 1 | /* $OpenBSD: s_socket.c,v 1.13 2021/12/06 11:06:58 tb Exp $ */ |
2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) | 2 | /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) |
3 | * All rights reserved. | 3 | * All rights reserved. |
4 | * | 4 | * |
@@ -75,7 +75,7 @@ | |||
75 | 75 | ||
76 | static int init_server(int *sock, int port, int type); | 76 | static int init_server(int *sock, int port, int type); |
77 | static int init_server_long(int *sock, int port, char *ip, int type); | 77 | static int init_server_long(int *sock, int port, char *ip, int type); |
78 | static int do_accept(int acc_sock, int *sock, char **host); | 78 | static int do_accept(int acc_sock, int *sock); |
79 | 79 | ||
80 | int | 80 | int |
81 | init_client(int *sock, char *host, char *port, int type, int af) | 81 | init_client(int *sock, char *host, char *port, int type, int af) |
@@ -131,11 +131,10 @@ init_client(int *sock, char *host, char *port, int type, int af) | |||
131 | 131 | ||
132 | int | 132 | int |
133 | do_server(int port, int type, int *ret, | 133 | do_server(int port, int type, int *ret, |
134 | int (*cb) (char *hostname, int s, unsigned char *context), | 134 | int (*cb)(int s, unsigned char *context), |
135 | unsigned char *context, int naccept) | 135 | unsigned char *context, int naccept) |
136 | { | 136 | { |
137 | int sock; | 137 | int sock; |
138 | char *name = NULL; | ||
139 | int accept_socket = 0; | 138 | int accept_socket = 0; |
140 | int i; | 139 | int i; |
141 | 140 | ||
@@ -148,15 +147,14 @@ do_server(int port, int type, int *ret, | |||
148 | } | 147 | } |
149 | for (;;) { | 148 | for (;;) { |
150 | if (type == SOCK_STREAM) { | 149 | if (type == SOCK_STREAM) { |
151 | if (do_accept(accept_socket, &sock, &name) == 0) { | 150 | if (do_accept(accept_socket, &sock) == 0) { |
152 | shutdown(accept_socket, SHUT_RD); | 151 | shutdown(accept_socket, SHUT_RD); |
153 | close(accept_socket); | 152 | close(accept_socket); |
154 | return (0); | 153 | return (0); |
155 | } | 154 | } |
156 | } else | 155 | } else |
157 | sock = accept_socket; | 156 | sock = accept_socket; |
158 | i = (*cb) (name, sock, context); | 157 | i = cb(sock, context); |
159 | free(name); | ||
160 | if (type == SOCK_STREAM) { | 158 | if (type == SOCK_STREAM) { |
161 | shutdown(sock, SHUT_RDWR); | 159 | shutdown(sock, SHUT_RDWR); |
162 | close(sock); | 160 | close(sock); |
@@ -227,13 +225,13 @@ init_server(int *sock, int port, int type) | |||
227 | } | 225 | } |
228 | 226 | ||
229 | static int | 227 | static int |
230 | do_accept(int acc_sock, int *sock, char **host) | 228 | do_accept(int acc_sock, int *sock) |
231 | { | 229 | { |
232 | int ret; | ||
233 | struct hostent *h1, *h2; | 230 | struct hostent *h1, *h2; |
234 | static struct sockaddr_in from; | 231 | static struct sockaddr_in from; |
235 | socklen_t len; | 232 | socklen_t len; |
236 | /* struct linger ling; */ | 233 | char *host = NULL; |
234 | int ret; | ||
237 | 235 | ||
238 | redoit: | 236 | redoit: |
239 | 237 | ||
@@ -249,47 +247,34 @@ do_accept(int acc_sock, int *sock, char **host) | |||
249 | perror("accept"); | 247 | perror("accept"); |
250 | return (0); | 248 | return (0); |
251 | } | 249 | } |
252 | /* | 250 | |
253 | ling.l_onoff=1; | ||
254 | ling.l_linger=0; | ||
255 | i=setsockopt(ret,SOL_SOCKET,SO_LINGER,(char *)&ling,sizeof(ling)); | ||
256 | if (i == -1) { perror("linger"); return(0); } | ||
257 | i=0; | ||
258 | i=setsockopt(ret,SOL_SOCKET,SO_KEEPALIVE,(char *)&i,sizeof(i)); | ||
259 | if (i == -1) { perror("keepalive"); return(0); } | ||
260 | */ | ||
261 | |||
262 | if (host == NULL) | ||
263 | goto end; | ||
264 | h1 = gethostbyaddr((char *) &from.sin_addr.s_addr, | 251 | h1 = gethostbyaddr((char *) &from.sin_addr.s_addr, |
265 | sizeof(from.sin_addr.s_addr), AF_INET); | 252 | sizeof(from.sin_addr.s_addr), AF_INET); |
266 | if (h1 == NULL) { | 253 | if (h1 == NULL) { |
267 | BIO_printf(bio_err, "bad gethostbyaddr\n"); | 254 | BIO_printf(bio_err, "bad gethostbyaddr\n"); |
268 | *host = NULL; | ||
269 | /* return(0); */ | ||
270 | } else { | 255 | } else { |
271 | if ((*host = strdup(h1->h_name)) == NULL) { | 256 | if ((host = strdup(h1->h_name)) == NULL) { |
272 | perror("strdup"); | 257 | perror("strdup"); |
273 | close(ret); | 258 | close(ret); |
274 | return (0); | 259 | return (0); |
275 | } | 260 | } |
276 | 261 | ||
277 | h2 = gethostbyname(*host); | 262 | h2 = gethostbyname(host); |
278 | if (h2 == NULL) { | 263 | if (h2 == NULL) { |
279 | BIO_printf(bio_err, "gethostbyname failure\n"); | 264 | BIO_printf(bio_err, "gethostbyname failure\n"); |
280 | close(ret); | 265 | close(ret); |
281 | free(*host); | 266 | free(host); |
282 | return (0); | 267 | return (0); |
283 | } | 268 | } |
284 | if (h2->h_addrtype != AF_INET) { | 269 | if (h2->h_addrtype != AF_INET) { |
285 | BIO_printf(bio_err, "gethostbyname addr is not AF_INET\n"); | 270 | BIO_printf(bio_err, "gethostbyname addr is not AF_INET\n"); |
286 | close(ret); | 271 | close(ret); |
287 | free(*host); | 272 | free(host); |
288 | return (0); | 273 | return (0); |
289 | } | 274 | } |
290 | } | 275 | } |
291 | 276 | ||
292 | end: | 277 | free(host); |
293 | *sock = ret; | 278 | *sock = ret; |
294 | return (1); | 279 | return (1); |
295 | } | 280 | } |