Short: Telnet und der Dev209
Date: Tue, 20 Jun 2000 18:15:27 +0200
From: Heiko Kopp <hkopp@t-online.de>
Type: Bug
State: Done - fixed in 3.2.8-dev.214

Analysis: A debug statement was at the wrong place, dereferencing an
uninitialized variable.

Hallo Lars,

ich habe mir mal einen Treiber mit DEBUG_TELNET definiert, kompiliert
und wollte den nun testen. Dazu habe ich die auskommentierten 
Hooks im Master reaktiviert. Lib ist Evermore-1.4N, Driver runs on cygwin,
client was zMud.

Nun gibt es dabei aber ein Problem:

2000.06.20 16:06:42 Setting up ipc.
6e330000://E/WINNT/System32/INDICDLL.dll
75df0000://E/WINNT/System32/IMM32.dll
77910000://E/WINNT/system32/imagehlp.dll
72970000://E/WINNT/system32/DBGHELP.dll
2000.06.20 16:06:48 TDEBUG: 'std/login#0' telnet_neg: state 0
2000.06.20 16:06:48 TDEBUG: 'std/login#0' telnet_neg: state 0
2000.06.20 16:06:48 TDEBUG: 'std/login#0' telnet machine ready
2000.06.20 16:06:48 TDEBUG: 'std/login#0' telnet_neg: state 0
2000.06.20 16:06:48 TDEBUG: 'std/login#0'    return with command
2000.06.20 16:06:48 TDEBUG: 'std/login#0' set_noecho(ffffff81) old 00 ->
confirm: ffffff85 -> ffffff
2000.06.20 16:06:48 TDEBUG: 'std/login#0' set_noecho():   calling H_NOECHO
2000.06.20 16:06:48 TDEBUG: 'std/login#0' telnet_neg: state 0
2000.06.20 16:06:48 TDEBUG: 'std/login#0' t_n: new state 1
2000.06.20 16:06:48 TDEBUG: 'std/login#0' t_n: state IAC
2000.06.20 16:06:48 TDEBUG: 'std/login#0' t_n: got DONT
2000.06.20 16:06:48 TDEBUG: 'std/login#0' t_n: new state 5
2000.06.20 16:06:48 TDEBUG: 'std/login#0' t_n: state DONT got ECHO (01)
2000.06.20 16:06:48 TDEBUG: 'std/login#0' reply to telnet_neg: DONT 01
2000.06.20 16:06:48 TDEBUG: 'std/login#0' t_n: new state 0
2000.06.20 16:06:52 TDEBUG: 'std/login#0' telnet_neg: state 0
2000.06.20 16:06:52 TDEBUG: 'std/login#0' telnet machine ready
2000.06.20 16:06:52 TDEBUG: 'std/login#0' telnet_neg: state 0
2000.06.20 16:06:52 TDEBUG: 'std/login#0'    return with command
2000.06.20 16:06:52 TDEBUG: 'std/player#2' set_noecho(00) old ffffffc5 ->
confirm: 00 -> 00
2000.06.20 16:06:52 TDEBUG: 'std/player#2' set_noecho():   calling H_NOECHO
2000.06.20 16:06:52 TDEBUG: 'std/player#2' telnet_neg: state 0
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 1
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state IAC
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: got DONT
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 5
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state DONT got ECHO (01)
2000.06.20 16:06:52 TDEBUG: 'std/player#2' reply to telnet_neg: DONT 01
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 0
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 1
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state IAC
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: got WONT
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 3
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state WONT got NEWENV (27)
2000.06.20 16:06:52 TDEBUG: 'std/player#2' reply to telnet_neg: WONT 27
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 0
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 1
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state IAC
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: got WONT
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 3
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state WONT got TERMINAL TYPE
(18)
2000.06.20 16:06:52 TDEBUG: 'std/player#2' reply to telnet_neg: WONT 18
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 0
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 1
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state IAC
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: got WONT
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 3
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state WONT got NAWS (1f)
2000.06.20 16:06:52 TDEBUG: 'std/player#2' reply to telnet_neg: WONT 1f
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 0
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 1
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state IAC
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: got WILL
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 2
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state WILL got TERMINAL TYPE
(18)
2000.06.20 16:06:52 TDEBUG: 'std/player#2' reply to telnet_neg: WILL 18
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 0
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 1
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state IAC
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: got WILL
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 2
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state WILL got NAWS (1f)
2000.06.20 16:06:52 TDEBUG: 'std/player#2' reply to telnet_neg: WILL 1f
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 0
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 1
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state IAC
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: got SB
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 6
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state TS_SB got 1f
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state TS_SB got 00
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state TS_SB got 7c
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state TS_SB got 00
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state TS_SB got 17
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state TS_SB got ff
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: new state 7
2000.06.20 16:06:52 TDEBUG: 'std/player#2' t_n: state TS_SB_IAC got f0

Program received signal SIGSEGV, Segmentation fault.
0x417bc6 in telnet_neg (ip=Cannot access memory at address 0x55.
) at comm.c:3876
3876    comm.c: No such file or directory.
(gdb)

Zeile 3876:

DT(("'%s' t_n: that is: state TS_SB_IAC got useful SE or SB: neg SB %02x (%d
bytes)\n", ip->ob->name, *str, size));

(gdb) display ip
1: ip = (interactive_t *) 0xa1bca54
(gdb) display ip->ob
2: ip->ob = (object_t *) 0xa239110
(gdb) display ip->ob->name
3: ip->ob->name = 0xa1e213c "std/player#2"

Zeile 3877:
str = (unsigned char *)&ip->text[ip->tn_start];
(gdb) display ip->tn_start
4: ip->tn_start = 0

Ich hoffe die Infos helfen Dir :)

Gruss Heiko

--__________________________________________
Archwizard Bardioc@Evermore
The Lands of Evermore - a fantasy mud
Come and join us at telnet://mud.evermore.de
Write me a mail at bardioc@evermore.de

