diff options
author | Hans Nilsson <[email protected]> | 2016-06-17 14:49:04 +0200 |
---|---|---|
committer | Hans Nilsson <[email protected]> | 2016-06-27 13:48:42 +0200 |
commit | 4586fd6fa3447a1c4191620fe5b8f4412d5af0ad (patch) | |
tree | 9610d060bf051f5ffb4d31eb353ef4495285f2d9 /lib/ssh/src | |
parent | 51f0950b714505a036df7e1c3030b1c16828fd3c (diff) | |
download | otp-4586fd6fa3447a1c4191620fe5b8f4412d5af0ad.tar.gz otp-4586fd6fa3447a1c4191620fe5b8f4412d5af0ad.tar.bz2 otp-4586fd6fa3447a1c4191620fe5b8f4412d5af0ad.zip |
ssh: Fix a hazard bug in ssh_auth
Diffstat (limited to 'lib/ssh/src')
-rw-r--r-- | lib/ssh/src/ssh_io.erl | 22 |
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)))); |