[erlang-patches] SSH-daemon invalid column calculation at ssh_cli:delete_chars()

Henrik Nord henrik@REDACTED
Thu Nov 21 11:25:20 CET 2013


Hi Alexander!

I have created a pull request for this to make sure it will get into the 
system and assigned to the proper team etc.

Thank you for your contribution!

On 2013-11-21 03:51, Alexander Demidenko wrote:
> Hello, friends.
>
> How can I see, in the ssh_cli.erl module, delete_chars method 
> incorrectly calculate variable "NewCol".
>
> I can offer the option of a patch that fixes this problem.
> The person who is responsible for supporting ssh has the discretion to 
> take it as it is, or can make own fix.
> Tested by Erlang 16B02, ssh 2.1.8 and R15B02, ssh 2.1.1
>
> hurd@REDACTED:~/Documents/Erlang/reports/ssh_expand_test$ cat ssh.patch
> --- ssh-2.1.1/src/ssh_cli.erl2013-10-26 14:25:26.000000000
> +++ ssh-2.1.2/src/ssh_cli.erl2013-10-26 14:18:18.000000000
> @@ -311,13 +319,14 @@
>      NewBufTail = nthtail(N, BufTail),
>      M = move_cursor(Col + length(NewBufTail) + N, Col, Tty),
>      {[NewBufTail, lists:duplicate(N, $ ) | M],
>       {Buf, NewBufTail, Col}};
>  delete_chars(N, {Buf, BufTail, Col}, Tty) -> % N < 0
>      NewBuf = nthtail(-N, Buf),
> -    NewCol = Col + N,
> +    NewCol = case Col + N of V when V >= 0 -> V; _ -> 0 end,
>      M1 = move_cursor(Col, NewCol, Tty),
>      M2 = move_cursor(NewCol + length(BufTail) - N, NewCol, Tty),
>      {[M1, BufTail, lists:duplicate(-N, $ ) | M2],
>       {NewBuf, BufTail, NewCol}}.
>  %%% Window change, redraw the current line (and clear out after it
>
>
> I attached simple sample, where you can see this problem.
> To run it, compile ssh_manager.erl and invoke "ssh_manager:start()" 
> method to run ssh-daemon.
> Then run simple ssh-client on terminal to localhost on port 9999, and 
> entering the password "test".
> (you need put keys in .ssh folder)
> Below example show trouble with the display of available commands when 
> you press Tab.
>
> At the command prompt "ssh_app:"
> _____________________________________________________
> 1> ssh_app:
> _____________________________________________________
>
> Press tab.
> _____________________________________________________
> 1> ssh_app:
> module_info/0  module_info/1  start/2        stop/1
> 1> ssh_app:
> _____________________________________________________
>
> You will see the line below "module_info/0 module_info/1 start/2 
> stop/1," and below that "ssh_app:".
> Everything is wonderful. Yet.
>
> Do the following: Go to the new line (Press enter) and enter a space 
> as long as the input field team did not go on the line below .
> _____________________________________________________
> 1>
> _____________________________________________________
>
> Enter "ssh_app:"
>
> _____________________________________________________
> 1>
>                        ssh_app:
> _____________________________________________________
>
> Press tab.
> _____________________________________________________
> 1>
>                        ssh_app:
> 1>
>                        ssh_app:
> _____________________________________________________
>
> You will see that the tab has not worked. The string "module_info/0 
> module_info/1 start/2 stop/1" was not withdrawn.
> This is not good.
>
> You still can do the following: Go to the new line (press the button 
> enter) and enter a space as long as the input field team did not go on 
> 2 lines below.
> _____________________________________________________
> 1>
> _____________________________________________________
>
> Enter "ssh_app:".
> ____________________________________________________
> 1>
>                                    ssh_app:
> _____________________________________________________
>
> Press tab.
>
> _____________________________________________________
> 1>
> 1>
>
>                                    ssh_app:
> _____________________________________________________
>
> You will see that the tab has not worked. The string "module_info/0 
> module_info/1 start/2 stop/1" was not withdrawn. This is not good.
>
> -- 
> ---------------------------------------------
> With best regards,
> Alexander.
>
>
> _______________________________________________
> erlang-patches mailing list
> erlang-patches@REDACTED
> http://erlang.org/mailman/listinfo/erlang-patches

-- 
/Henrik Nord Erlang/OTP

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://erlang.org/pipermail/erlang-patches/attachments/20131121/c40c126b/attachment.htm>


More information about the erlang-patches mailing list