Package: telnet
Version: 0.17-28

When telnet is invoked with non-TTY stdin, it can mess up the
control characters.

example:
$ echo lll | telnet localhost 8000
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.

receiving end:
$ nc -l -p 8000 | od -t x1
0000000 ff f4 ff fd 06
0000005

(as you can see, it interprets 'l' as 'interrupt process' here)

I've tracked down the bug to TerminalSaveState() in terminal.cc,
where tcgetattr() is called without checking if fd 0 is a terminal,
and without checking the result value; as it turns out, the call
modifies the passed struct (I guess the C library creates its own
temporary buffer and then copies the values from there), and returns
-1 to signal an error.

http://www.inf.tu-dresden.de/~bf3/misc/netkit-telnet-0.17-tcgetattr.diff

is a patch that works for me - but I'm not sure that's entirely
correct and it's most likely incomplete.

I'm using kernel 2.6.11.7 and glibc 2.3.4. I'm using Gentoo Linux,
but Gentoo uses the telnet package of Debian without significant
modifications at this time (it only adds a -D_GNU_SOURCE to CFLAGS
and CXXFLAGS)


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to