File 3751-ssh-set_label-for-processes.patch of Package erlang
From 409396bcd4941e61216929950780655511930ac9 Mon Sep 17 00:00:00 2001
From: Jakub Witczak <kuba@erlang.org>
Date: Mon, 11 Mar 2024 11:38:35 +0100
Subject: [PATCH] ssh: set_label for processes
---
lib/ssh/src/ssh.app.src | 2 +-
lib/ssh/src/ssh_acceptor.erl | 3 +++
lib/ssh/src/ssh_acceptor_sup.erl | 1 +
lib/ssh/src/ssh_channel_sup.erl | 1 +
lib/ssh/src/ssh_connection_handler.erl | 3 +++
lib/ssh/src/ssh_lib.erl | 12 +++++++++++-
lib/ssh/src/ssh_subsystem_sup.erl | 1 +
lib/ssh/src/ssh_system_sup.erl | 1 +
lib/ssh/src/ssh_tcpip_forward_acceptor_sup.erl | 1 +
9 files changed, 23 insertions(+), 2 deletions(-)
diff --git a/lib/ssh/src/ssh.app.src b/lib/ssh/src/ssh.app.src
index fedd05e350..588ac5e9e5 100644
--- a/lib/ssh/src/ssh.app.src
+++ b/lib/ssh/src/ssh.app.src
@@ -62,6 +62,6 @@
"erts-14.0",
"kernel-9.0",
"public_key-1.6.1",
- "stdlib-5.0","stdlib-5.0",
+ "stdlib-5.2","stdlib-5.0",
"runtime_tools-1.15.1"
]}]}.
diff --git a/lib/ssh/src/ssh_acceptor.erl b/lib/ssh/src/ssh_acceptor.erl
index 80df3c376f..3740694bba 100644
--- a/lib/ssh/src/ssh_acceptor.erl
+++ b/lib/ssh/src/ssh_acceptor.erl
@@ -74,6 +74,9 @@ close(Socket, Options) ->
acceptor_init(Parent, SystemSup,
#address{address=Address, port=Port, profile=_Profile},
Opts) ->
+ ssh_lib:set_label(server,
+ {acceptor,
+ list_to_binary(ssh_lib:format_address_port(Address, Port))}),
AcceptTimeout = ?GET_INTERNAL_OPT(timeout, Opts, ?DEFAULT_TIMEOUT),
case ?GET_INTERNAL_OPT(lsocket, Opts, undefined) of
{LSock, SockOwner} ->
diff --git a/lib/ssh/src/ssh_acceptor_sup.erl b/lib/ssh/src/ssh_acceptor_sup.erl
index 2898a62061..1661134285 100644
--- a/lib/ssh/src/ssh_acceptor_sup.erl
+++ b/lib/ssh/src/ssh_acceptor_sup.erl
@@ -55,6 +55,7 @@ restart_child(AccSup, Address) ->
%%% Supervisor callback
%%%=========================================================================
init([SystemSup, Address, Options]) ->
+ ssh_lib:set_label(server, acceptor_sup),
%% Initial start of ssh_acceptor_sup for this port
SupFlags = #{strategy => one_for_one,
intensity => 10,
diff --git a/lib/ssh/src/ssh_channel_sup.erl b/lib/ssh/src/ssh_channel_sup.erl
index a56855fe01..2e36574022 100644
--- a/lib/ssh/src/ssh_channel_sup.erl
+++ b/lib/ssh/src/ssh_channel_sup.erl
@@ -56,6 +56,7 @@ start_child(server, ChannelSup, ConnRef, Callback, Id, Args, Exec, Opts) when is
%%% Supervisor callback
%%%=========================================================================
init(_Args) ->
+ ssh_lib:set_label(channel_sup),
RestartStrategy = one_for_one,
MaxR = 10,
MaxT = 3600,
diff --git a/lib/ssh/src/ssh_connection_handler.erl b/lib/ssh/src/ssh_connection_handler.erl
index 42f0426c12..d39ca05ea2 100644
--- a/lib/ssh/src/ssh_connection_handler.erl
+++ b/lib/ssh/src/ssh_connection_handler.erl
@@ -459,6 +459,8 @@ init_ssh_record(Role, Socket, PeerAddr, Opts) ->
PeerName0 when is_list(PeerName0) ->
PeerName0
end,
+ ssh_lib:set_label(client,
+ {connection, list_to_binary(PeerName), Socket}),
S1 =
S0#ssh{c_vsn = Vsn,
c_version = Version,
@@ -477,6 +479,7 @@ init_ssh_record(Role, Socket, PeerAddr, Opts) ->
};
server ->
+ ssh_lib:set_label(server, {connection, Socket}),
S0#ssh{s_vsn = Vsn,
s_version = Version,
userauth_methods = string:tokens(AuthMethods, ","),
diff --git a/lib/ssh/src/ssh_connection_sup.erl b/lib/ssh/src/ssh_connection_sup.erl
index 90ce8afbdb..2a24cb667b 100644
--- a/lib/ssh/src/ssh_connection_sup.erl
+++ b/lib/ssh/src/ssh_connection_sup.erl
@@ -59,6 +59,7 @@ tcpip_fwd_supervisor(SubSysSup) ->
%%% Supervisor callback
%%%=========================================================================
init([Role, Id, Socket, Options]) ->
+ ssh_lib:set_label(Role, {connection_sup, Socket}),
ConnectionSup = self(),
SupFlags = #{strategy => one_for_all,
auto_shutdown => any_significant,
diff --git a/lib/ssh/src/ssh_lib.erl b/lib/ssh/src/ssh_lib.erl
index a1020245c9..762bc3eb56 100644
--- a/lib/ssh/src/ssh_lib.erl
+++ b/lib/ssh/src/ssh_lib.erl
@@ -29,6 +29,8 @@
format_address/1,
format_time_ms/1,
comp/2,
+ set_label/1,
+ set_label/2,
trim_reason/1,
max_log_len/1
]).
@@ -87,6 +89,15 @@ comp([], [], Truth) ->
comp(_, _, _) ->
false.
+
+set_label(Details) ->
+ proc_lib:set_label({ssh, Details}).
+
+set_label(client, Details) ->
+ proc_lib:set_label({sshc, Details});
+set_label(server, Details) ->
+ proc_lib:set_label({sshd, Details}).
+
%% We don't want to process badmatch details, potentially containing
%% malicious data of unknown size
trim_reason({badmatch, V}) when is_binary(V) ->
diff --git a/lib/ssh/src/ssh_system_sup.erl b/lib/ssh/src/ssh_system_sup.erl
index 9e31575685..91da0b4aed 100644
--- a/lib/ssh/src/ssh_system_sup.erl
+++ b/lib/ssh/src/ssh_system_sup.erl
@@ -178,6 +178,7 @@ replace_acceptor_options(SysPid, NewOpts) ->
%%% Supervisor callback
%%%=========================================================================
init([Role, Address, Options]) ->
+ ssh_lib:set_label(Role, system_sup),
SupFlags = #{strategy => one_for_one,
auto_shutdown => all_significant,
intensity => 0,
diff --git a/lib/ssh/src/ssh_tcpip_forward_acceptor_sup.erl b/lib/ssh/src/ssh_tcpip_forward_acceptor_sup.erl
index fe290aeba0..5cd3fcaf49 100644
--- a/lib/ssh/src/ssh_tcpip_forward_acceptor_sup.erl
+++ b/lib/ssh/src/ssh_tcpip_forward_acceptor_sup.erl
@@ -52,6 +52,7 @@ start_child(Sup, LSock, ListenAddr, ConnectToAddr, ChanType, ChanCB, ConnPid) ->
%%% Supervisor callback
%%%=========================================================================
init([]) ->
+ ssh_lib:set_label(tcpip_fw_acceptor_sup),
SupFlags = #{strategy => one_for_one,
intensity => 10,
period => 3600
--
2.43.0