diff options
Diffstat (limited to 'src/lib/libssl/ssl_tlsext.c')
-rw-r--r-- | src/lib/libssl/ssl_tlsext.c | 15 |
1 files changed, 6 insertions, 9 deletions
diff --git a/src/lib/libssl/ssl_tlsext.c b/src/lib/libssl/ssl_tlsext.c index de9fabd4c7..0e37cc3cc0 100644 --- a/src/lib/libssl/ssl_tlsext.c +++ b/src/lib/libssl/ssl_tlsext.c | |||
@@ -1,4 +1,4 @@ | |||
1 | /* $OpenBSD: ssl_tlsext.c,v 1.43 2019/03/19 16:53:03 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_tlsext.c,v 1.44 2019/03/25 17:21:18 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2016, 2017, 2019 Joel Sing <jsing@openbsd.org> |
4 | * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> | 4 | * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> |
@@ -556,19 +556,16 @@ tlsext_sigalgs_client_build(SSL *s, CBB *cbb) | |||
556 | int | 556 | int |
557 | tlsext_sigalgs_server_parse(SSL *s, CBS *cbs, int *alert) | 557 | tlsext_sigalgs_server_parse(SSL *s, CBS *cbs, int *alert) |
558 | { | 558 | { |
559 | uint16_t *tls_sigalgs = tls12_sigalgs; | ||
560 | size_t tls_sigalgs_len = tls12_sigalgs_len; | ||
561 | CBS sigalgs; | 559 | CBS sigalgs; |
562 | 560 | ||
563 | if (s->version >= TLS1_3_VERSION) { | ||
564 | tls_sigalgs = tls13_sigalgs; | ||
565 | tls_sigalgs_len = tls13_sigalgs_len; | ||
566 | } | ||
567 | |||
568 | if (!CBS_get_u16_length_prefixed(cbs, &sigalgs)) | 561 | if (!CBS_get_u16_length_prefixed(cbs, &sigalgs)) |
569 | return 0; | 562 | return 0; |
563 | if (CBS_len(&sigalgs) % 2 != 0 || CBS_len(&sigalgs) > 64) | ||
564 | return 0; | ||
565 | if (!CBS_stow(&sigalgs, &S3I(s)->hs.sigalgs, &S3I(s)->hs.sigalgs_len)) | ||
566 | return 0; | ||
570 | 567 | ||
571 | return tls1_process_sigalgs(s, &sigalgs, tls_sigalgs, tls_sigalgs_len); | 568 | return 1; |
572 | } | 569 | } |
573 | 570 | ||
574 | int | 571 | int |