From 8724ebf1e13fe4ebec73aaa9285011d9aa99e9cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A9ter=20Dimitrov?= Date: Thu, 13 Dec 2018 15:41:07 +0100 Subject: ssl: Fix encoding/decoding of supported_versions Encode length of supported_versions in one octet instead of two. Change-Id: If24b38f3d2a40f0aa7152bb05bc0392efca6454c --- lib/ssl/src/ssl_handshake.erl | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'lib/ssl') diff --git a/lib/ssl/src/ssl_handshake.erl b/lib/ssl/src/ssl_handshake.erl index d45fea84be..5e3c767c2c 100644 --- a/lib/ssl/src/ssl_handshake.erl +++ b/lib/ssl/src/ssl_handshake.erl @@ -680,9 +680,9 @@ encode_extensions([#sni{hostname = Hostname} | Rest], Acc) -> encode_extensions([#client_hello_versions{versions = Versions0} | Rest], Acc) -> Versions = encode_versions(Versions0), VerLen = byte_size(Versions), - Len = VerLen + 2, + Len = VerLen + 1, encode_extensions(Rest, <>); + ?UINT16(Len), ?BYTE(VerLen), Versions/binary, Acc/binary>>); encode_extensions([#server_hello_selected_version{selected_version = Version0} | Rest], Acc) -> Version = encode_versions([Version0]), Len = byte_size(Version), %% 2 @@ -745,7 +745,6 @@ decode_handshake(Version, ?SERVER_HELLO, <>) -> - HelloExtensions = decode_hello_extensions(Extensions, Version, {Major, Minor}, server_hello), #server_hello{ @@ -2222,7 +2221,7 @@ process_supported_versions_extension(<<>>, LocalVersion, _LegacyVersion) -> process_supported_versions_extension(<>, LocalVersion, _LegacyVersion) when Len > 2 -> - <> = ExtData, + <> = ExtData, [Highest|_] = decode_versions(Versions0), if Highest =< LocalVersion -> Highest; @@ -2375,7 +2374,7 @@ decode_extensions(<>, Version, MessageType, Acc) when Len > 2 -> - <> = ExtData, + <> = ExtData, decode_extensions(Rest, Version, MessageType, Acc#{client_hello_versions => #client_hello_versions{ -- cgit v1.2.3