[erlang-patches] Putty and erlang sshd fix

Peter Lund erlang@REDACTED
Tue Jan 29 11:09:25 CET 2008


I guess we should send this here as well... 

/Peter



Peter Lund wrote:

> Testade med putty 0.59 och 0.60, men ssh_sshd servern krashade 
> fortfarande.
> Servern krashar då putty skickar en ensam tvåa <<2>> (SSH_MSG_IGNORE) men
> servern förväntar sig en sträng efter IGNORE.
>
> Själv la jag till ytterligare en patch för att få servern att 
> acceptera både en
> ensam IGNORE och en IGNORE med en sträng. Med patchen neda fick jag 
> ssh att funka.

Known 0.59 putty bug, putyy skickar IGNORE utan extra data.  Om vi ska 
vara putty
bug-kompatibla så är din patch nästan ok. För att #ssh_msg_ignore{} ska 
bli rätt måste
dock patchen se ut som:

Index: ssh_bits.erl
===================================================================
--- ssh_bits.erl        (revision 14434)
+++ ssh_bits.erl        (working copy)
@@ -259,11 +259,16 @@
            <<_:Offset/binary, _:16, _:Pad, X:Bits/big-unsigned-integer,
             _/binary>> = Binary,
            decode(Binary, Offset+2+L, Ts, [X | Acc]);
-
        string ->
-           <<_:Offset/binary,?UINT32(L), X:L/binary,_/binary>> = Binary,
-           decode(Binary, Offset+4+L, Ts, [binary_to_list(X) | Acc]);
-
+           Size = size(Binary),
+           if Size < Offset + 4  ->
+                   %% empty string at end
+                   {Size, reverse(["" | Acc])};
+              true ->
+                   <<_:Offset/binary,?UINT32(L), X:L/binary,_/binary>> =
+                       Binary,
+                   decode(Binary, Offset+4+L, Ts, [binary_to_list(X) | 
Acc])
+           end;
        binary ->
            <<_:Offset/binary,?UINT32(L), X:L/binary,_/binary>> = Binary,
            decode(Binary, Offset+4+L, Ts, [X | Acc]);



/klacke




More information about the erlang-patches mailing list