diff options
author | jsing <> | 2018-05-12 17:27:22 +0000 |
---|---|---|
committer | jsing <> | 2018-05-12 17:27:22 +0000 |
commit | 3f65a6101076de0d6e6618882055842165daf137 (patch) | |
tree | bfbf05494fc9558692f4c44344631fcde648df29 /src/lib | |
parent | 53d4b718a9c6f35dea63adcfc4640490d5e1a267 (diff) | |
download | openbsd-3f65a6101076de0d6e6618882055842165daf137.tar.gz openbsd-3f65a6101076de0d6e6618882055842165daf137.tar.bz2 openbsd-3f65a6101076de0d6e6618882055842165daf137.zip |
If we fail to decode an EC point format extension, send a decode_error
alert rather than an internal_error alert.
Issue found by Simon Friedberger, Robert Merget and Juraj Somorovsky.
ok beck@ inoguchi@
Diffstat (limited to 'src/lib')
-rw-r--r-- | src/lib/libssl/ssl_tlsext.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/src/lib/libssl/ssl_tlsext.c b/src/lib/libssl/ssl_tlsext.c index 3735b719db..b70be87f3a 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.21 2018/02/08 11:30:30 jsing Exp $ */ | 1 | /* $OpenBSD: ssl_tlsext.c,v 1.22 2018/05/12 17:27:22 jsing Exp $ */ |
2 | /* | 2 | /* |
3 | * Copyright (c) 2016, 2017 Joel Sing <jsing@openbsd.org> | 3 | * Copyright (c) 2016, 2017 Joel Sing <jsing@openbsd.org> |
4 | * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> | 4 | * Copyright (c) 2017 Doug Hogan <doug@openbsd.org> |
@@ -333,14 +333,16 @@ tlsext_ecpf_parse(SSL *s, CBS *cbs, int *alert) | |||
333 | 333 | ||
334 | if (!s->internal->hit) { | 334 | if (!s->internal->hit) { |
335 | if (!CBS_stow(&ecpf, &(SSI(s)->tlsext_ecpointformatlist), | 335 | if (!CBS_stow(&ecpf, &(SSI(s)->tlsext_ecpointformatlist), |
336 | &(SSI(s)->tlsext_ecpointformatlist_length))) | 336 | &(SSI(s)->tlsext_ecpointformatlist_length))) { |
337 | goto err; | 337 | *alert = TLS1_AD_INTERNAL_ERROR; |
338 | return 0; | ||
339 | } | ||
338 | } | 340 | } |
339 | 341 | ||
340 | return 1; | 342 | return 1; |
341 | 343 | ||
342 | err: | 344 | err: |
343 | *alert = TLS1_AD_INTERNAL_ERROR; | 345 | *alert = SSL_AD_DECODE_ERROR; |
344 | return 0; | 346 | return 0; |
345 | } | 347 | } |
346 | 348 | ||