Skip to content

KISS implementation bug: not ignoring invalid commands? #106

Open
@worsthorse

Description

@worsthorse

I setup Direwolf as the TNC for Winlink (RMSExpress), replacing Soundmodem. I used the default configuration of Direwolf, other than changing MYCALL and properly setting the ports for transmit and receive audio. When Winlink tries to connect, it sends a series of KISS commands to Direwolf and all is well until...

Connected to KISS client application ...

KISS protocol set Persistence = 160, port 0
KISS protocol set SlotTime = 30 (*10mS units = 300 mS), port 0
KISS protocol set TXDELAY = 40 (*10mS units = 400 mS), port 0
KISS protocol set FullDuplex = 0, port 0
KISS Invalid command 12

<<< Invalid 12 from KISS client application, port 0, total length = 18
000: 0c 04 dd 96 8c 6e 98 94 90 f4 96 6e ae b0 ae 40 .....n.....n...@
010: 61 3f a?

Winlink is sending a command related to ACK mode operation, which Direwolf does not support. In fact, if Winlink's "Packet TNC Model" setting is set to NORMAL, this error doesn't occur.

But I think this reveals a bug in Direwolf's KISS implementation. The only valid KISS commands are 0 through 6 and FF. Properly implemented KISS TNCs should ignore other command numbers completely, not mark them as invalid, or drop the connection to the client.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions