summaryrefslogtreecommitdiff
path: root/src/lib
diff options
context:
space:
mode:
authorjsing <>2020-01-23 03:17:40 +0000
committerjsing <>2020-01-23 03:17:40 +0000
commit7e2f15593307fc374a9a0b62d562093d20e0f4aa (patch)
tree0ef2c65adc26f279aea716841857cfd27cc33036 /src/lib
parentb70929d8816a98e03f2a44de9ee1c07edde90382 (diff)
downloadopenbsd-7e2f15593307fc374a9a0b62d562093d20e0f4aa.tar.gz
openbsd-7e2f15593307fc374a9a0b62d562093d20e0f4aa.tar.bz2
openbsd-7e2f15593307fc374a9a0b62d562093d20e0f4aa.zip
Switch back to a function pointer for ssl_pending.
This will allow the TLSv1.3 stack to provide its own implementation. Nuke a completely bogus comment from SSL_pending() whilst here. ok beck@
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/libssl/ssl_lib.c12
-rw-r--r--src/lib/libssl/ssl_locl.h7
-rw-r--r--src/lib/libssl/ssl_methods.c19
3 files changed, 24 insertions, 14 deletions
diff --git a/src/lib/libssl/ssl_lib.c b/src/lib/libssl/ssl_lib.c
index a667b5d294..1b141b6e2c 100644
--- a/src/lib/libssl/ssl_lib.c
+++ b/src/lib/libssl/ssl_lib.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_lib.c,v 1.208 2020/01/21 04:45:18 tb Exp $ */ 1/* $OpenBSD: ssl_lib.c,v 1.209 2020/01/23 03:17:40 jsing 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 *
@@ -802,15 +802,7 @@ SSL_get_read_ahead(const SSL *s)
802int 802int
803SSL_pending(const SSL *s) 803SSL_pending(const SSL *s)
804{ 804{
805 /* 805 return (s->method->internal->ssl_pending(s));
806 * SSL_pending cannot work properly if read-ahead is enabled
807 * (SSL_[CTX_]ctrl(..., SSL_CTRL_SET_READ_AHEAD, 1, NULL)),
808 * and it is impossible to fix since SSL_pending cannot report
809 * errors that may be observed while scanning the new data.
810 * (Note that SSL_pending() is often used as a boolean value,
811 * so we'd better not return -1.)
812 */
813 return (ssl3_pending(s));
814} 806}
815 807
816X509 * 808X509 *
diff --git a/src/lib/libssl/ssl_locl.h b/src/lib/libssl/ssl_locl.h
index 1c60f10684..8649f651fa 100644
--- a/src/lib/libssl/ssl_locl.h
+++ b/src/lib/libssl/ssl_locl.h
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_locl.h,v 1.252 2020/01/22 15:47:22 jsing Exp $ */ 1/* $OpenBSD: ssl_locl.h,v 1.253 2020/01/23 03:17:40 jsing 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 *
@@ -391,8 +391,9 @@ typedef struct ssl_method_internal_st {
391 391
392 long (*ssl_get_message)(SSL *s, int st1, int stn, int mt, 392 long (*ssl_get_message)(SSL *s, int st1, int stn, int mt,
393 long max, int *ok); 393 long max, int *ok);
394 int (*ssl_read_bytes)(SSL *s, int type, unsigned char *buf, 394 int (*ssl_pending)(const SSL *s);
395 int len, int peek); 395 int (*ssl_read_bytes)(SSL *s, int type, unsigned char *buf, int len,
396 int peek);
396 int (*ssl_write_bytes)(SSL *s, int type, const void *buf_, int len); 397 int (*ssl_write_bytes)(SSL *s, int type, const void *buf_, int len);
397 398
398 const struct ssl_method_st *(*get_ssl_method)(int version); 399 const struct ssl_method_st *(*get_ssl_method)(int version);
diff --git a/src/lib/libssl/ssl_methods.c b/src/lib/libssl/ssl_methods.c
index 30838f7407..355cd8823a 100644
--- a/src/lib/libssl/ssl_methods.c
+++ b/src/lib/libssl/ssl_methods.c
@@ -1,4 +1,4 @@
1/* $OpenBSD: ssl_methods.c,v 1.8 2020/01/22 15:47:22 jsing Exp $ */ 1/* $OpenBSD: ssl_methods.c,v 1.9 2020/01/23 03:17:40 jsing 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,6 +75,7 @@ static const SSL_METHOD_INTERNAL DTLSv1_client_method_internal_data = {
75 .ssl_renegotiate = ssl3_renegotiate, 75 .ssl_renegotiate = ssl3_renegotiate,
76 .ssl_renegotiate_check = ssl3_renegotiate_check, 76 .ssl_renegotiate_check = ssl3_renegotiate_check,
77 .ssl_get_message = dtls1_get_message, 77 .ssl_get_message = dtls1_get_message,
78 .ssl_pending = ssl3_pending,
78 .ssl_read_bytes = dtls1_read_bytes, 79 .ssl_read_bytes = dtls1_read_bytes,
79 .ssl_write_bytes = dtls1_write_app_data_bytes, 80 .ssl_write_bytes = dtls1_write_app_data_bytes,
80 .ssl3_enc = &DTLSv1_enc_data, 81 .ssl3_enc = &DTLSv1_enc_data,
@@ -127,6 +128,7 @@ static const SSL_METHOD_INTERNAL DTLSv1_method_internal_data = {
127 .ssl_renegotiate = ssl3_renegotiate, 128 .ssl_renegotiate = ssl3_renegotiate,
128 .ssl_renegotiate_check = ssl3_renegotiate_check, 129 .ssl_renegotiate_check = ssl3_renegotiate_check,
129 .ssl_get_message = dtls1_get_message, 130 .ssl_get_message = dtls1_get_message,
131 .ssl_pending = ssl3_pending,
130 .ssl_read_bytes = dtls1_read_bytes, 132 .ssl_read_bytes = dtls1_read_bytes,
131 .ssl_write_bytes = dtls1_write_app_data_bytes, 133 .ssl_write_bytes = dtls1_write_app_data_bytes,
132 .ssl3_enc = &DTLSv1_enc_data, 134 .ssl3_enc = &DTLSv1_enc_data,
@@ -177,6 +179,7 @@ static const SSL_METHOD_INTERNAL DTLSv1_server_method_internal_data = {
177 .ssl_renegotiate = ssl3_renegotiate, 179 .ssl_renegotiate = ssl3_renegotiate,
178 .ssl_renegotiate_check = ssl3_renegotiate_check, 180 .ssl_renegotiate_check = ssl3_renegotiate_check,
179 .ssl_get_message = dtls1_get_message, 181 .ssl_get_message = dtls1_get_message,
182 .ssl_pending = ssl3_pending,
180 .ssl_read_bytes = dtls1_read_bytes, 183 .ssl_read_bytes = dtls1_read_bytes,
181 .ssl_write_bytes = dtls1_write_app_data_bytes, 184 .ssl_write_bytes = dtls1_write_app_data_bytes,
182 .ssl3_enc = &DTLSv1_enc_data, 185 .ssl3_enc = &DTLSv1_enc_data,
@@ -228,6 +231,7 @@ static const SSL_METHOD_INTERNAL TLS_client_method_internal_data = {
228 .ssl_renegotiate = ssl_undefined_function, 231 .ssl_renegotiate = ssl_undefined_function,
229 .ssl_renegotiate_check = ssl_ok, 232 .ssl_renegotiate_check = ssl_ok,
230 .ssl_get_message = ssl3_get_message, 233 .ssl_get_message = ssl3_get_message,
234 .ssl_pending = ssl3_pending,
231 .ssl_read_bytes = tls13_legacy_read_bytes, 235 .ssl_read_bytes = tls13_legacy_read_bytes,
232 .ssl_write_bytes = tls13_legacy_write_bytes, 236 .ssl_write_bytes = tls13_legacy_write_bytes,
233 .ssl3_enc = &TLSv1_2_enc_data, 237 .ssl3_enc = &TLSv1_2_enc_data,
@@ -259,6 +263,7 @@ static const SSL_METHOD_INTERNAL TLS_legacy_client_method_internal_data = {
259 .ssl_renegotiate = ssl_undefined_function, 263 .ssl_renegotiate = ssl_undefined_function,
260 .ssl_renegotiate_check = ssl_ok, 264 .ssl_renegotiate_check = ssl_ok,
261 .ssl_get_message = ssl3_get_message, 265 .ssl_get_message = ssl3_get_message,
266 .ssl_pending = ssl3_pending,
262 .ssl_read_bytes = ssl3_read_bytes, 267 .ssl_read_bytes = ssl3_read_bytes,
263 .ssl_write_bytes = ssl3_write_bytes, 268 .ssl_write_bytes = ssl3_write_bytes,
264 .ssl3_enc = &TLSv1_2_enc_data, 269 .ssl3_enc = &TLSv1_2_enc_data,
@@ -289,6 +294,7 @@ static const SSL_METHOD_INTERNAL TLSv1_client_method_internal_data = {
289 .ssl_renegotiate = ssl3_renegotiate, 294 .ssl_renegotiate = ssl3_renegotiate,
290 .ssl_renegotiate_check = ssl3_renegotiate_check, 295 .ssl_renegotiate_check = ssl3_renegotiate_check,
291 .ssl_get_message = ssl3_get_message, 296 .ssl_get_message = ssl3_get_message,
297 .ssl_pending = ssl3_pending,
292 .ssl_read_bytes = ssl3_read_bytes, 298 .ssl_read_bytes = ssl3_read_bytes,
293 .ssl_write_bytes = ssl3_write_bytes, 299 .ssl_write_bytes = ssl3_write_bytes,
294 .ssl3_enc = &TLSv1_enc_data, 300 .ssl3_enc = &TLSv1_enc_data,
@@ -319,6 +325,7 @@ static const SSL_METHOD_INTERNAL TLSv1_1_client_method_internal_data = {
319 .ssl_renegotiate = ssl3_renegotiate, 325 .ssl_renegotiate = ssl3_renegotiate,
320 .ssl_renegotiate_check = ssl3_renegotiate_check, 326 .ssl_renegotiate_check = ssl3_renegotiate_check,
321 .ssl_get_message = ssl3_get_message, 327 .ssl_get_message = ssl3_get_message,
328 .ssl_pending = ssl3_pending,
322 .ssl_read_bytes = ssl3_read_bytes, 329 .ssl_read_bytes = ssl3_read_bytes,
323 .ssl_write_bytes = ssl3_write_bytes, 330 .ssl_write_bytes = ssl3_write_bytes,
324 .ssl3_enc = &TLSv1_1_enc_data, 331 .ssl3_enc = &TLSv1_1_enc_data,
@@ -349,6 +356,7 @@ static const SSL_METHOD_INTERNAL TLSv1_2_client_method_internal_data = {
349 .ssl_renegotiate = ssl3_renegotiate, 356 .ssl_renegotiate = ssl3_renegotiate,
350 .ssl_renegotiate_check = ssl3_renegotiate_check, 357 .ssl_renegotiate_check = ssl3_renegotiate_check,
351 .ssl_get_message = ssl3_get_message, 358 .ssl_get_message = ssl3_get_message,
359 .ssl_pending = ssl3_pending,
352 .ssl_read_bytes = ssl3_read_bytes, 360 .ssl_read_bytes = ssl3_read_bytes,
353 .ssl_write_bytes = ssl3_write_bytes, 361 .ssl_write_bytes = ssl3_write_bytes,
354 .ssl3_enc = &TLSv1_2_enc_data, 362 .ssl3_enc = &TLSv1_2_enc_data,
@@ -433,6 +441,7 @@ static const SSL_METHOD_INTERNAL TLS_method_internal_data = {
433 .ssl_renegotiate = ssl_undefined_function, 441 .ssl_renegotiate = ssl_undefined_function,
434 .ssl_renegotiate_check = ssl_ok, 442 .ssl_renegotiate_check = ssl_ok,
435 .ssl_get_message = ssl3_get_message, 443 .ssl_get_message = ssl3_get_message,
444 .ssl_pending = ssl3_pending,
436 .ssl_read_bytes = ssl3_read_bytes, 445 .ssl_read_bytes = ssl3_read_bytes,
437 .ssl_write_bytes = ssl3_write_bytes, 446 .ssl_write_bytes = ssl3_write_bytes,
438 .ssl3_enc = &TLSv1_2_enc_data, 447 .ssl3_enc = &TLSv1_2_enc_data,
@@ -463,6 +472,7 @@ static const SSL_METHOD_INTERNAL TLSv1_method_internal_data = {
463 .ssl_renegotiate = ssl3_renegotiate, 472 .ssl_renegotiate = ssl3_renegotiate,
464 .ssl_renegotiate_check = ssl3_renegotiate_check, 473 .ssl_renegotiate_check = ssl3_renegotiate_check,
465 .ssl_get_message = ssl3_get_message, 474 .ssl_get_message = ssl3_get_message,
475 .ssl_pending = ssl3_pending,
466 .ssl_read_bytes = ssl3_read_bytes, 476 .ssl_read_bytes = ssl3_read_bytes,
467 .ssl_write_bytes = ssl3_write_bytes, 477 .ssl_write_bytes = ssl3_write_bytes,
468 .ssl3_enc = &TLSv1_enc_data, 478 .ssl3_enc = &TLSv1_enc_data,
@@ -493,6 +503,7 @@ static const SSL_METHOD_INTERNAL TLSv1_1_method_internal_data = {
493 .ssl_renegotiate = ssl3_renegotiate, 503 .ssl_renegotiate = ssl3_renegotiate,
494 .ssl_renegotiate_check = ssl3_renegotiate_check, 504 .ssl_renegotiate_check = ssl3_renegotiate_check,
495 .ssl_get_message = ssl3_get_message, 505 .ssl_get_message = ssl3_get_message,
506 .ssl_pending = ssl3_pending,
496 .ssl_read_bytes = ssl3_read_bytes, 507 .ssl_read_bytes = ssl3_read_bytes,
497 .ssl_write_bytes = ssl3_write_bytes, 508 .ssl_write_bytes = ssl3_write_bytes,
498 .ssl3_enc = &TLSv1_1_enc_data, 509 .ssl3_enc = &TLSv1_1_enc_data,
@@ -523,6 +534,7 @@ static const SSL_METHOD_INTERNAL TLSv1_2_method_internal_data = {
523 .ssl_renegotiate = ssl3_renegotiate, 534 .ssl_renegotiate = ssl3_renegotiate,
524 .ssl_renegotiate_check = ssl3_renegotiate_check, 535 .ssl_renegotiate_check = ssl3_renegotiate_check,
525 .ssl_get_message = ssl3_get_message, 536 .ssl_get_message = ssl3_get_message,
537 .ssl_pending = ssl3_pending,
526 .ssl_read_bytes = ssl3_read_bytes, 538 .ssl_read_bytes = ssl3_read_bytes,
527 .ssl_write_bytes = ssl3_write_bytes, 539 .ssl_write_bytes = ssl3_write_bytes,
528 .ssl3_enc = &TLSv1_2_enc_data, 540 .ssl3_enc = &TLSv1_2_enc_data,
@@ -596,6 +608,7 @@ static const SSL_METHOD_INTERNAL TLS_server_method_internal_data = {
596 .ssl_renegotiate = ssl_undefined_function, 608 .ssl_renegotiate = ssl_undefined_function,
597 .ssl_renegotiate_check = ssl_ok, 609 .ssl_renegotiate_check = ssl_ok,
598 .ssl_get_message = ssl3_get_message, 610 .ssl_get_message = ssl3_get_message,
611 .ssl_pending = ssl3_pending,
599 .ssl_read_bytes = tls13_legacy_read_bytes, 612 .ssl_read_bytes = tls13_legacy_read_bytes,
600 .ssl_write_bytes = tls13_legacy_write_bytes, 613 .ssl_write_bytes = tls13_legacy_write_bytes,
601 .ssl3_enc = &TLSv1_2_enc_data, 614 .ssl3_enc = &TLSv1_2_enc_data,
@@ -627,6 +640,7 @@ static const SSL_METHOD_INTERNAL TLS_legacy_server_method_internal_data = {
627 .ssl_renegotiate = ssl_undefined_function, 640 .ssl_renegotiate = ssl_undefined_function,
628 .ssl_renegotiate_check = ssl_ok, 641 .ssl_renegotiate_check = ssl_ok,
629 .ssl_get_message = ssl3_get_message, 642 .ssl_get_message = ssl3_get_message,
643 .ssl_pending = ssl3_pending,
630 .ssl_read_bytes = ssl3_read_bytes, 644 .ssl_read_bytes = ssl3_read_bytes,
631 .ssl_write_bytes = ssl3_write_bytes, 645 .ssl_write_bytes = ssl3_write_bytes,
632 .ssl3_enc = &TLSv1_2_enc_data, 646 .ssl3_enc = &TLSv1_2_enc_data,
@@ -657,6 +671,7 @@ static const SSL_METHOD_INTERNAL TLSv1_server_method_internal_data = {
657 .ssl_renegotiate = ssl3_renegotiate, 671 .ssl_renegotiate = ssl3_renegotiate,
658 .ssl_renegotiate_check = ssl3_renegotiate_check, 672 .ssl_renegotiate_check = ssl3_renegotiate_check,
659 .ssl_get_message = ssl3_get_message, 673 .ssl_get_message = ssl3_get_message,
674 .ssl_pending = ssl3_pending,
660 .ssl_read_bytes = ssl3_read_bytes, 675 .ssl_read_bytes = ssl3_read_bytes,
661 .ssl_write_bytes = ssl3_write_bytes, 676 .ssl_write_bytes = ssl3_write_bytes,
662 .ssl3_enc = &TLSv1_enc_data, 677 .ssl3_enc = &TLSv1_enc_data,
@@ -687,6 +702,7 @@ static const SSL_METHOD_INTERNAL TLSv1_1_server_method_internal_data = {
687 .ssl_renegotiate = ssl3_renegotiate, 702 .ssl_renegotiate = ssl3_renegotiate,
688 .ssl_renegotiate_check = ssl3_renegotiate_check, 703 .ssl_renegotiate_check = ssl3_renegotiate_check,
689 .ssl_get_message = ssl3_get_message, 704 .ssl_get_message = ssl3_get_message,
705 .ssl_pending = ssl3_pending,
690 .ssl_read_bytes = ssl3_read_bytes, 706 .ssl_read_bytes = ssl3_read_bytes,
691 .ssl_write_bytes = ssl3_write_bytes, 707 .ssl_write_bytes = ssl3_write_bytes,
692 .ssl3_enc = &TLSv1_1_enc_data, 708 .ssl3_enc = &TLSv1_1_enc_data,
@@ -717,6 +733,7 @@ static const SSL_METHOD_INTERNAL TLSv1_2_server_method_internal_data = {
717 .ssl_renegotiate = ssl3_renegotiate, 733 .ssl_renegotiate = ssl3_renegotiate,
718 .ssl_renegotiate_check = ssl3_renegotiate_check, 734 .ssl_renegotiate_check = ssl3_renegotiate_check,
719 .ssl_get_message = ssl3_get_message, 735 .ssl_get_message = ssl3_get_message,
736 .ssl_pending = ssl3_pending,
720 .ssl_read_bytes = ssl3_read_bytes, 737 .ssl_read_bytes = ssl3_read_bytes,
721 .ssl_write_bytes = ssl3_write_bytes, 738 .ssl_write_bytes = ssl3_write_bytes,
722 .ssl3_enc = &TLSv1_2_enc_data, 739 .ssl3_enc = &TLSv1_2_enc_data,