aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ssh
diff options
context:
space:
mode:
authorHans Nilsson <[email protected]>2016-06-17 14:49:04 +0200
committerHans Nilsson <[email protected]>2016-06-27 13:48:42 +0200
commit4586fd6fa3447a1c4191620fe5b8f4412d5af0ad (patch)
tree9610d060bf051f5ffb4d31eb353ef4495285f2d9 /lib/ssh
parent51f0950b714505a036df7e1c3030b1c16828fd3c (diff)
downloadotp-4586fd6fa3447a1c4191620fe5b8f4412d5af0ad.tar.gz
otp-4586fd6fa3447a1c4191620fe5b8f4412d5af0ad.tar.bz2
otp-4586fd6fa3447a1c4191620fe5b8f4412d5af0ad.zip
ssh: Fix a hazard bug in ssh_auth
Diffstat (limited to 'lib/ssh')
-rw-r--r--lib/ssh/src/ssh_io.erl22
1 files changed, 13 insertions, 9 deletions
diff --git a/lib/ssh/src/ssh_io.erl b/lib/ssh/src/ssh_io.erl
index 759ee71877..1d8f370884 100644
--- a/lib/ssh/src/ssh_io.erl
+++ b/lib/ssh/src/ssh_io.erl
@@ -31,7 +31,7 @@ read_line(Prompt, Ssh) ->
format("~s", [listify(Prompt)]),
proplists:get_value(user_pid, Ssh) ! {self(), question},
receive
- Answer ->
+ Answer when is_list(Answer) ->
Answer
end.
@@ -44,7 +44,7 @@ yes_no(Prompt, Ssh) ->
y -> yes;
n -> no;
- Answer ->
+ Answer when is_list(Answer) ->
case trim(Answer) of
"y" -> yes;
"n" -> no;
@@ -62,20 +62,24 @@ read_password(Prompt, Opts) when is_list(Opts) ->
format("~s", [listify(Prompt)]),
proplists:get_value(user_pid, Opts) ! {self(), user_password},
receive
- "" ->
- read_password(Prompt, Opts);
- Answer ->
- Answer
+ Answer when is_list(Answer) ->
+ case trim(Answer) of
+ "" ->
+ read_password(Prompt, Opts);
+ Pwd ->
+ Pwd
+ end
end.
+format(Fmt, Args) ->
+ io:format(Fmt, Args).
+
+%%%================================================================
listify(A) when is_atom(A) -> atom_to_list(A);
listify(L) when is_list(L) -> L;
listify(B) when is_binary(B) -> binary_to_list(B).
-format(Fmt, Args) ->
- io:format(Fmt, Args).
-
trim(Line) when is_list(Line) ->
lists:reverse(trim1(lists:reverse(trim1(Line))));