File 1401-ssh-ssh_file-license-parsing-fix.patch of Package erlang
From 0bf11fa65d0ff088deefd1fb971d1ccc75f601e9 Mon Sep 17 00:00:00 2001
From: Jakub Witczak <kuba@erlang.org>
Date: Tue, 9 Sep 2025 07:38:14 +0200
Subject: [PATCH 1/5] ssh: ssh_file license parsing fix
---
lib/ssh/src/ssh_file.erl | 19 +++++++++++++------
1 file changed, 13 insertions(+), 6 deletions(-)
diff --git a/lib/ssh/src/ssh_file.erl b/lib/ssh/src/ssh_file.erl
index 321c6f8c55..5e4f268f4d 100644
--- a/lib/ssh/src/ssh_file.erl
+++ b/lib/ssh/src/ssh_file.erl
@@ -490,11 +490,18 @@ decode(KeyBin, ssh2_pubkey) when is_binary(KeyBin) ->
ssh_message:ssh2_pubkey_decode(KeyBin);
decode(KeyBin, public_key) when is_binary(KeyBin) ->
- Type = case KeyBin of
- <<"-----BEGIN OPENSSH",_/binary>> -> openssh_key_v1;
- <<"----",_/binary>> -> rfc4716_key;
- _ -> openssh_key
- end,
+ Matches = fun(Bin, Pattern, Type) ->
+ case binary:match(Bin, Pattern) of
+ nomatch -> false;
+ _ -> Type
+ end
+ end,
+ Type =
+ maybe
+ false ?= Matches(KeyBin, <<"\n-----BEGIN OPENSSH">>, openssh_key_v1),
+ false ?= Matches(KeyBin, <<"\n----">>, rfc4716_key),
+ openssh_key
+ end,
decode(KeyBin, Type);
decode(KeyBin, Type) when is_binary(KeyBin) andalso
@@ -1172,7 +1179,7 @@ decode_ssh_file(PrivPub, Algorithm, Pem, Password) ->
decode_pem_keys(RawBin, Password) ->
- PemLines = split_in_lines(
+ PemLines = split_in_nonempty_lines(
binary:replace(RawBin, [<<"\\\n">>,<<"\\\r\\\n">>], <<"">>, [global])
),
decode_pem_keys(PemLines, Password, []).
--
2.51.0