diff options
author | jsing <> | 2020-01-23 03:17:40 +0000 |
---|---|---|
committer | jsing <> | 2020-01-23 03:17:40 +0000 |
commit | 7e2f15593307fc374a9a0b62d562093d20e0f4aa (patch) | |
tree | 0ef2c65adc26f279aea716841857cfd27cc33036 /src/lib | |
parent | b70929d8816a98e03f2a44de9ee1c07edde90382 (diff) | |
download | openbsd-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.c | 12 | ||||
-rw-r--r-- | src/lib/libssl/ssl_locl.h | 7 | ||||
-rw-r--r-- | src/lib/libssl/ssl_methods.c | 19 |
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) | |||
802 | int | 802 | int |
803 | SSL_pending(const SSL *s) | 803 | SSL_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 | ||
816 | X509 * | 808 | X509 * |
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, |