diff options
author | Jimmy Olgeni <olgeni@FreeBSD.org> | 2015-06-02 12:26:03 +0000 |
---|---|---|
committer | Jimmy Olgeni <olgeni@FreeBSD.org> | 2015-06-02 12:26:03 +0000 |
commit | 704b15243f53c4f34a5afbb8ff4cda592a8abd04 (patch) | |
tree | a9aed0153c3deec93b596f98935399baf574811a /lang/erlang-runtime17/files/patch-otp-17.5.2 | |
parent | e0471dcdf8bdbbd18edbc5da972212c25691a520 (diff) |
Notes
Diffstat (limited to 'lang/erlang-runtime17/files/patch-otp-17.5.2')
-rw-r--r-- | lang/erlang-runtime17/files/patch-otp-17.5.2 | 427 |
1 files changed, 0 insertions, 427 deletions
diff --git a/lang/erlang-runtime17/files/patch-otp-17.5.2 b/lang/erlang-runtime17/files/patch-otp-17.5.2 deleted file mode 100644 index 3be7ef0060d0..000000000000 --- a/lang/erlang-runtime17/files/patch-otp-17.5.2 +++ /dev/null @@ -1,427 +0,0 @@ -diff --git OTP_VERSION OTP_VERSION -index 9cbaf23..808ab16 100644 ---- OTP_VERSION -+++ OTP_VERSION -@@ -1 +1 @@ --17.5.1 -+17.5.2 -diff --git lib/inets/doc/src/httpd.xml lib/inets/doc/src/httpd.xml -index 20c8a6b..e40660a 100644 ---- lib/inets/doc/src/httpd.xml -+++ lib/inets/doc/src/httpd.xml -@@ -315,7 +315,7 @@ text/plain asc txt - </item> - - <marker id="prop_server_tokens"></marker> -- <tag>{server_tokens, prod|major|minor|minimal|os|full|{private, string()}}</tag> -+ <tag>{server_tokens, none|prod|major|minor|minimal|os|full|{private, string()}}</tag> - <item> - <p>ServerTokens defines how the value of the server header - should look. </p> -@@ -323,6 +323,7 @@ text/plain asc txt - here is what the server header string could look like for - the different values of server-tokens: </p> - <pre> -+none "" % A Server: header will not be generated - prod "inets" - major "inets/5" - minor "inets/5.8" -diff --git lib/inets/doc/src/notes.xml lib/inets/doc/src/notes.xml -index 2c3ee79..12bbc2b 100644 ---- lib/inets/doc/src/notes.xml -+++ lib/inets/doc/src/notes.xml -@@ -32,7 +32,28 @@ - <file>notes.xml</file> - </header> - -- <section><title>Inets 5.10.6</title> -+ <section><title>Inets 5.10.7</title> -+ -+ <section><title>Improvements and New Features</title> -+ <list> -+ <item> -+ <p> -+ New value in <c>server_tokens</c> config for limiting -+ banner grabbing attempts. </p> -+ <p> -+ By setting <c>{server_tokens, none}</c> in -+ <c>ServiceConfig</c> for <c>inets:start(httpd, -+ ServiceConfig)</c>, the "Server:" header will not be set -+ in messages from the server.</p> -+ <p> -+ Own Id: OTP-12661 Aux Id: seq12840 </p> -+ </item> -+ </list> -+ </section> -+ -+</section> -+ -+<section><title>Inets 5.10.6</title> - - <section><title>Fixed Bugs and Malfunctions</title> - <list> -diff --git lib/inets/src/http_server/httpd_conf.erl lib/inets/src/http_server/httpd_conf.erl -index 78dda79..dbdc1be 100644 ---- lib/inets/src/http_server/httpd_conf.erl -+++ lib/inets/src/http_server/httpd_conf.erl -@@ -219,14 +219,14 @@ load("ServerName " ++ ServerName, []) -> - - load("ServerTokens " ++ ServerTokens, []) -> - %% These are the valid *plain* server tokens: -- %% sprod, major, minor, minimum, os, full -+ %% none, prod, major, minor, minimum, os, full - %% It can also be a "private" server token: private:<any string> - case string:tokens(ServerTokens, [$:]) of - ["private", Private] -> - {ok,[], {server_tokens, clean(Private)}}; - [TokStr] -> - Tok = list_to_atom(clean(TokStr)), -- case lists:member(Tok, [prod, major, minor, minimum, os, full]) of -+ case lists:member(Tok, [none, prod, major, minor, minimum, os, full]) of - true -> - {ok,[], {server_tokens, Tok}}; - false -> -@@ -850,6 +850,8 @@ server(full = _ServerTokens) -> - OS = os_info(full), - lists:flatten( - io_lib:format("~s ~s OTP/~s", [?SERVER_SOFTWARE, OS, OTPRelease])); -+server(none = _ServerTokens) -> -+ ""; - server({private, Server} = _ServerTokens) when is_list(Server) -> - %% The user provide its own - Server; -@@ -1299,7 +1301,7 @@ ssl_ca_certificate_file(ConfigDB) -> - end. - - plain_server_tokens() -> -- [prod, major, minor, minimum, os, full]. -+ [none, prod, major, minor, minimum, os, full]. - - error_report(Where,M,F,Error) -> - error_logger:error_report([{?MODULE, Where}, -diff --git lib/inets/src/http_server/httpd_response.erl lib/inets/src/http_server/httpd_response.erl -index 0895729..2fa91d4 100644 ---- lib/inets/src/http_server/httpd_response.erl -+++ lib/inets/src/http_server/httpd_response.erl -@@ -287,8 +287,11 @@ create_header(ConfigDb, KeyValueTupleHeaders) -> - ContentType = "text/html", - Server = server(ConfigDb), - NewHeaders = add_default_headers([{"date", Date}, -- {"content-type", ContentType}, -- {"server", Server}], -+ {"content-type", ContentType} -+ | if Server=="" -> []; -+ true -> [{"server", Server}] -+ end -+ ], - KeyValueTupleHeaders), - lists:map(fun fix_header/1, NewHeaders). - -diff --git lib/inets/vsn.mk lib/inets/vsn.mk -index e5b63a6..e9ecb26 100644 ---- lib/inets/vsn.mk -+++ lib/inets/vsn.mk -@@ -18,6 +18,6 @@ - # %CopyrightEnd% - - APPLICATION = inets --INETS_VSN = 5.10.6 -+INETS_VSN = 5.10.7 - PRE_VSN = - APP_VSN = "$(APPLICATION)-$(INETS_VSN)$(PRE_VSN)" -diff --git lib/ssh/doc/src/notes.xml lib/ssh/doc/src/notes.xml -index acbf312..41885c6 100644 ---- lib/ssh/doc/src/notes.xml -+++ lib/ssh/doc/src/notes.xml -@@ -29,6 +29,27 @@ - <file>notes.xml</file> - </header> - -+<section><title>Ssh 3.2.2</title> -+ -+ <section><title>Improvements and New Features</title> -+ <list> -+ <item> -+ <p> -+ New option <c>id_string</c> for <c>ssh:daemon</c> and -+ <c>ssh:connect</c> for limiting banner grabbing attempts.</p> -+ <p> -+ The possible values are: <c>{id_string,string()}</c> and -+ <c>{id_string,random}</c>. The latter will make ssh -+ generate a random nonsence id-string for each new -+ connection.</p> -+ <p> -+ Own Id: OTP-12659</p> -+ </item> -+ </list> -+ </section> -+ -+</section> -+ - <section><title>Ssh 3.2.1</title> - - <section><title>Fixed Bugs and Malfunctions</title> -diff --git lib/ssh/doc/src/ssh.xml lib/ssh/doc/src/ssh.xml -index 0e7e384..72dafc0 100644 ---- lib/ssh/doc/src/ssh.xml -+++ lib/ssh/doc/src/ssh.xml -@@ -180,6 +180,15 @@ - <item> - <p>If true, the client will not print out anything on authorization.</p> - </item> -+ -+ <tag><c><![CDATA[{id_string, random | string()}]]></c></tag> -+ <item> -+ <p>The string that the client presents to a connected server initially. The default value is "Erlang/VSN" where VSN is the ssh application version number. -+ </p> -+ <p>The value <c>random</c> will cause a random string to be created at each connection attempt. This is to make it a bit more difficult for a malicious peer to find the ssh software brand and version. -+ </p> -+ </item> -+ - <tag><c><![CDATA[{fd, file_descriptor()}]]></c></tag> - <item> - <p>Allow an existing file descriptor to be used -@@ -344,6 +353,14 @@ - </p> - </item> - -+ <tag><c><![CDATA[{id_string, random | string()}]]></c></tag> -+ <item> -+ <p>The string the daemon will present to a connecting peer initially. The default value is "Erlang/VSN" where VSN is the ssh application version number. -+ </p> -+ <p>The value <c>random</c> will cause a random string to be created at each connection attempt. This is to make it a bit more difficult for a malicious peer to find the ssh software brand and version. -+ </p> -+ </item> -+ - <tag><c><![CDATA[{key_cb, atom()}]]></c></tag> - <item> - <p>Module implementing the behaviour <seealso marker="ssh_server_key_api">ssh_server_key_api</seealso>. -diff --git lib/ssh/src/ssh.erl lib/ssh/src/ssh.erl -index 51ad691..d4b02a0 100644 ---- lib/ssh/src/ssh.erl -+++ lib/ssh/src/ssh.erl -@@ -347,6 +347,8 @@ handle_option([parallel_login|Rest], SocketOptions, SshOptions) -> - handle_option(Rest, SocketOptions, [handle_ssh_option({parallel_login,true}) | SshOptions]); - handle_option([{minimal_remote_max_packet_size, _} = Opt|Rest], SocketOptions, SshOptions) -> - handle_option(Rest, SocketOptions, [handle_ssh_option(Opt) | SshOptions]); -+handle_option([{id_string, _ID} = Opt|Rest], SocketOptions, SshOptions) -> -+ handle_option(Rest, SocketOptions, [handle_ssh_option(Opt) | SshOptions]); - handle_option([Opt | Rest], SocketOptions, SshOptions) -> - handle_option(Rest, [handle_inet_option(Opt) | SocketOptions], SshOptions). - -@@ -439,6 +441,10 @@ handle_ssh_option({idle_time, Value} = Opt) when is_integer(Value), Value > 0 -> - Opt; - handle_ssh_option({rekey_limit, Value} = Opt) when is_integer(Value) -> - Opt; -+handle_ssh_option({id_string, random}) -> -+ {id_string, {random,2,5}}; %% 2 - 5 random characters -+handle_ssh_option({id_string, ID} = Opt) when is_list(ID) -> -+ Opt; - handle_ssh_option(Opt) -> - throw({error, {eoptions, Opt}}). - -diff --git lib/ssh/src/ssh_transport.erl lib/ssh/src/ssh_transport.erl -index 76fa776..8669be5 100644 ---- lib/ssh/src/ssh_transport.erl -+++ lib/ssh/src/ssh_transport.erl -@@ -44,12 +44,34 @@ - - versions(client, Options)-> - Vsn = proplists:get_value(vsn, Options, ?DEFAULT_CLIENT_VERSION), -- Version = format_version(Vsn), -- {Vsn, Version}; -+ {Vsn, format_version(Vsn, software_version(Options))}; - versions(server, Options) -> - Vsn = proplists:get_value(vsn, Options, ?DEFAULT_SERVER_VERSION), -- Version = format_version(Vsn), -- {Vsn, Version}. -+ {Vsn, format_version(Vsn, software_version(Options))}. -+ -+software_version(Options) -> -+ case proplists:get_value(id_string, Options) of -+ undefined -> -+ "Erlang"++ssh_vsn(); -+ {random,Nlo,Nup} -> -+ random_id(Nlo,Nup); -+ ID -> -+ ID -+ end. -+ -+ssh_vsn() -> -+ try {ok,L} = application:get_all_key(ssh), -+ proplists:get_value(vsn,L,"") -+ of -+ "" -> ""; -+ VSN when is_list(VSN) -> "/" ++ VSN; -+ _ -> "" -+ catch -+ _:_ -> "" -+ end. -+ -+random_id(Nlo, Nup) -> -+ [crypto:rand_uniform($a,$z+1) || _<- lists:duplicate(crypto:rand_uniform(Nlo,Nup+1),x) ]. - - hello_version_msg(Data) -> - [Data,"\r\n"]. -@@ -77,9 +99,9 @@ is_valid_mac(Mac, Data, #ssh{recv_mac = Algorithm, - yes_no(Ssh, Prompt) -> - (Ssh#ssh.io_cb):yes_no(Prompt, Ssh). - --format_version({Major,Minor}) -> -+format_version({Major,Minor}, SoftwareVersion) -> - "SSH-" ++ integer_to_list(Major) ++ "." ++ -- integer_to_list(Minor) ++ "-Erlang". -+ integer_to_list(Minor) ++ "-" ++ SoftwareVersion. - - handle_hello_version(Version) -> - try -diff --git lib/ssh/test/ssh_basic_SUITE.erl lib/ssh/test/ssh_basic_SUITE.erl -index 81c7b5c..f5f8991 100644 ---- lib/ssh/test/ssh_basic_SUITE.erl -+++ lib/ssh/test/ssh_basic_SUITE.erl -@@ -52,6 +52,12 @@ all() -> - ssh_connect_arg4_timeout, - packet_size_zero, - ssh_daemon_minimal_remote_max_packet_size_option, -+ id_string_no_opt_client, -+ id_string_own_string_client, -+ id_string_random_client, -+ id_string_no_opt_server, -+ id_string_own_string_server, -+ id_string_random_server, - {group, hardening_tests} - ]. - -@@ -817,6 +823,66 @@ ssh_daemon_minimal_remote_max_packet_size_option(Config) -> - ssh:stop_daemon(Server). - - %%-------------------------------------------------------------------- -+id_string_no_opt_client(Config) -> -+ {Server, Host, Port} = fake_daemon(Config), -+ {error,_} = ssh:connect(Host, Port, []), -+ receive -+ {id,Server,"SSH-2.0-Erlang/"++Vsn} -> -+ true = expected_ssh_vsn(Vsn); -+ {id,Server,Other} -> -+ ct:fail("Unexpected id: ~s.",[Other]) -+ end. -+ -+%%-------------------------------------------------------------------- -+id_string_own_string_client(Config) -> -+ {Server, Host, Port} = fake_daemon(Config), -+ {error,_} = ssh:connect(Host, Port, [{id_string,"Pelle"}]), -+ receive -+ {id,Server,"SSH-2.0-Pelle\r\n"} -> -+ ok; -+ {id,Server,Other} -> -+ ct:fail("Unexpected id: ~s.",[Other]) -+ end. -+ -+%%-------------------------------------------------------------------- -+id_string_random_client(Config) -> -+ {Server, Host, Port} = fake_daemon(Config), -+ {error,_} = ssh:connect(Host, Port, [{id_string,random}]), -+ receive -+ {id,Server,Id="SSH-2.0-Erlang"++_} -> -+ ct:fail("Unexpected id: ~s.",[Id]); -+ {id,Server,Rnd="SSH-2.0-"++_} -> -+ ct:log("Got ~s.",[Rnd]); -+ {id,Server,Id} -> -+ ct:fail("Unexpected id: ~s.",[Id]) -+ end. -+ -+%%-------------------------------------------------------------------- -+id_string_no_opt_server(Config) -> -+ {_Server, Host, Port} = std_daemon(Config, []), -+ {ok,S1}=gen_tcp:connect(Host,Port,[{active,false}]), -+ {ok,"SSH-2.0-Erlang/"++Vsn} = gen_tcp:recv(S1, 0, 2000), -+ true = expected_ssh_vsn(Vsn). -+ -+%%-------------------------------------------------------------------- -+id_string_own_string_server(Config) -> -+ {_Server, Host, Port} = std_daemon(Config, [{id_string,"Olle"}]), -+ {ok,S1}=gen_tcp:connect(Host,Port,[{active,false}]), -+ {ok,"SSH-2.0-Olle\r\n"} = gen_tcp:recv(S1, 0, 2000). -+ -+%%-------------------------------------------------------------------- -+id_string_random_server(Config) -> -+ {_Server, Host, Port} = std_daemon(Config, [{id_string,random}]), -+ {ok,S1}=gen_tcp:connect(Host,Port,[{active,false}]), -+ {ok,"SSH-2.0-"++Rnd} = gen_tcp:recv(S1, 0, 2000), -+ case Rnd of -+ "Erlang"++_ -> ct:log("Id=~p",[Rnd]), -+ {fail,got_default_id}; -+ "Olle\r\n" -> {fail,got_previous_tests_value}; -+ _ -> ct:log("Got ~s.",[Rnd]) -+ end. -+ -+%%-------------------------------------------------------------------- - ssh_connect_negtimeout_parallel(Config) -> ssh_connect_negtimeout(Config,true). - ssh_connect_negtimeout_sequential(Config) -> ssh_connect_negtimeout(Config,false). - -@@ -1095,3 +1161,46 @@ do_shell(IO, Shell) -> - %% {'EXIT', Shell, killed} -> - %% ok - %% end. -+ -+ -+std_daemon(Config, ExtraOpts) -> -+ SystemDir = ?config(data_dir, Config), -+ PrivDir = ?config(priv_dir, Config), -+ UserDir = filename:join(PrivDir, nopubkey), % to make sure we don't use public-key-auth -+ file:make_dir(UserDir), -+ {_Server, _Host, _Port} = ssh_test_lib:daemon([{system_dir, SystemDir}, -+ {user_dir, UserDir}, -+ {failfun, fun ssh_test_lib:failfun/2} | ExtraOpts]). -+ -+expected_ssh_vsn(Str) -> -+ try -+ {ok,L} = application:get_all_key(ssh), -+ proplists:get_value(vsn,L,"")++"\r\n" -+ of -+ Str -> true; -+ "\r\n" -> true; -+ _ -> false -+ catch -+ _:_ -> true %% ssh not started so we dont't know -+ end. -+ -+ -+fake_daemon(_Config) -> -+ Parent = self(), -+ %% start the server -+ Server = spawn(fun() -> -+ {ok,Sl} = gen_tcp:listen(0,[]), -+ {ok,{Host,Port}} = inet:sockname(Sl), -+ Parent ! {sockname,self(),Host,Port}, -+ Rsa = gen_tcp:accept(Sl), -+ ct:log("Server gen_tcp:accept got ~p",[Rsa]), -+ {ok,S} = Rsa, -+ receive -+ {tcp, S, Id} -> Parent ! {id,self(),Id} -+ end -+ end), -+ %% Get listening host and port -+ receive -+ {sockname,Server,ServerHost,ServerPort} -> {Server, ServerHost, ServerPort} -+ end. -+ -diff --git lib/ssh/vsn.mk lib/ssh/vsn.mk -index fec8dac..b2b85a7 100644 ---- lib/ssh/vsn.mk -+++ lib/ssh/vsn.mk -@@ -1,4 +1,4 @@ - #-*-makefile-*- ; force emacs to enter makefile-mode - --SSH_VSN = 3.2.1 -+SSH_VSN = 3.2.2 - APP_VSN = "ssh-$(SSH_VSN)" -diff --git otp_versions.table otp_versions.table -index a82f535..4bf6cb9 100644 ---- otp_versions.table -+++ otp_versions.table -@@ -1,3 +1,4 @@ -+OTP-17.5.2 : inets-5.10.7 ssh-3.2.2 # asn1-3.0.4 common_test-1.10 compiler-5.0.4 cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 crypto-3.5 debugger-4.0.3 dialyzer-2.7.4 diameter-1.9 edoc-0.7.16 eldap-1.1.1 erl_docgen-0.3.7 erl_interface-3.7.20 erts-6.4 et-1.5 eunit-2.2.9 gs-1.5.16 hipe-3.11.3 ic-4.3.6 jinterface-1.5.12 kernel-3.2 megaco-3.17.3 mnesia-4.12.5 observer-2.0.4 odbc-2.10.22 orber-3.7.1 os_mon-2.3.1 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 public_key-0.23 reltool-0.6.6 runtime_tools-1.8.16 sasl-2.4.1 snmp-5.1.1 ssl-6.0 stdlib-2.4 syntax_tools-1.6.18 test_server-3.8 tools-2.7.2 typer-0.9.8 webtool-0.8.10 wx-1.3.3 xmerl-1.3.7 : - OTP-17.5.1 : ssh-3.2.1 # asn1-3.0.4 common_test-1.10 compiler-5.0.4 cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 crypto-3.5 debugger-4.0.3 dialyzer-2.7.4 diameter-1.9 edoc-0.7.16 eldap-1.1.1 erl_docgen-0.3.7 erl_interface-3.7.20 erts-6.4 et-1.5 eunit-2.2.9 gs-1.5.16 hipe-3.11.3 ic-4.3.6 inets-5.10.6 jinterface-1.5.12 kernel-3.2 megaco-3.17.3 mnesia-4.12.5 observer-2.0.4 odbc-2.10.22 orber-3.7.1 os_mon-2.3.1 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 public_key-0.23 reltool-0.6.6 runtime_tools-1.8.16 sasl-2.4.1 snmp-5.1.1 ssl-6.0 stdlib-2.4 syntax_tools-1.6.18 test_server-3.8 tools-2.7.2 typer-0.9.8 webtool-0.8.10 wx-1.3.3 xmerl-1.3.7 : - OTP-17.5 : asn1-3.0.4 common_test-1.10 compiler-5.0.4 crypto-3.5 debugger-4.0.3 dialyzer-2.7.4 diameter-1.9 eldap-1.1.1 erts-6.4 hipe-3.11.3 inets-5.10.6 kernel-3.2 mnesia-4.12.5 observer-2.0.4 os_mon-2.3.1 public_key-0.23 runtime_tools-1.8.16 ssh-3.2 ssl-6.0 stdlib-2.4 syntax_tools-1.6.18 test_server-3.8 tools-2.7.2 wx-1.3.3 # cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 edoc-0.7.16 erl_docgen-0.3.7 erl_interface-3.7.20 et-1.5 eunit-2.2.9 gs-1.5.16 ic-4.3.6 jinterface-1.5.12 megaco-3.17.3 odbc-2.10.22 orber-3.7.1 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 reltool-0.6.6 sasl-2.4.1 snmp-5.1.1 typer-0.9.8 webtool-0.8.10 xmerl-1.3.7 : - OTP-17.4.1 : erts-6.3.1 inets-5.10.5 # asn1-3.0.3 common_test-1.9 compiler-5.0.3 cosEvent-2.1.15 cosEventDomain-1.1.14 cosFileTransfer-1.1.16 cosNotification-1.1.21 cosProperty-1.1.17 cosTime-1.1.14 cosTransactions-1.2.14 crypto-3.4.2 debugger-4.0.2 dialyzer-2.7.3 diameter-1.8 edoc-0.7.16 eldap-1.1 erl_docgen-0.3.7 erl_interface-3.7.20 et-1.5 eunit-2.2.9 gs-1.5.16 hipe-3.11.2 ic-4.3.6 jinterface-1.5.12 kernel-3.1 megaco-3.17.3 mnesia-4.12.4 observer-2.0.3 odbc-2.10.22 orber-3.7.1 os_mon-2.3 ose-1.0.2 otp_mibs-1.0.10 parsetools-2.0.12 percept-0.8.10 public_key-0.22.1 reltool-0.6.6 runtime_tools-1.8.15 sasl-2.4.1 snmp-5.1.1 ssh-3.1 ssl-5.3.8 stdlib-2.3 syntax_tools-1.6.17 test_server-3.7.2 tools-2.7.1 typer-0.9.8 webtool-0.8.10 wx-1.3.2 xmerl-1.3.7 : |