Skip to content

Commit 6b911b8

Browse files
committed
fix: fast fail on invalid ssl options
1 parent 7e9e98f commit 6b911b8

File tree

3 files changed

+10
-5
lines changed

3 files changed

+10
-5
lines changed

src/esockd.app.src

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{application, esockd,
22
[{description, "General Non-blocking TCP/SSL and UDP/DTLS Server"},
33
{id, "esockd"},
4-
{vsn, "5.9.7"},
4+
{vsn, git},
55
{modules, []},
66
{registered, []},
77
{applications, [kernel, stdlib, sasl, ssl, public_key]},

src/esockd_acceptor_sup.erl

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,11 @@ ssl_upgrade_fun(Type, Opts) ->
126126
end,
127127
case proplists:get_value(Key, Opts) of
128128
undefined -> [];
129-
SslOpts -> [esockd_transport:ssl_upgrade_fun(SslOpts)]
129+
SslOpts ->
130+
%% validate ssl options and prevent the listener from starting if
131+
%% validation failed
132+
_ = ssl:handle_options(SslOpts, server, undefined),
133+
[esockd_transport:ssl_upgrade_fun(SslOpts)]
130134
end.
131135

132136
tune_socket(Sock, []) ->

test/esockd_SUITE.erl

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -404,9 +404,10 @@ t_update_tls_options(Config) ->
404404
[{ssl_options, SslOpts1}, {connection_mfargs, echo_server}]),
405405
{ok, Sock1} = ssl:connect("localhost", LPort, ClientSslOpts, 1000),
406406

407-
ok = esockd:set_options({echo_tls, LPort}, [{ssl_options, [{verify, verify_peer}]}]),
408-
?assertEqual( {error, closed}
409-
, ssl:connect("localhost", LPort, ClientSslOpts, 1000)),
407+
?assertError(
408+
{badmatch, _},
409+
esockd:set_options({echo_tls, LPort}, [{ssl_options, [{verify, verify_peer}]}])
410+
),
410411

411412
ok = esockd:set_options({echo_tls, LPort}, [{ssl_options, SslOpts2}]),
412413
{ok, Sock2} = ssl:connect("localhost", LPort, ClientSslOpts, 1000),

0 commit comments

Comments
 (0)