[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#2155: tcsh - aborts if unknown TERM at login



Package: tcsh
Status: install ok installed
Priority: standard
Section: shells
Version: 6.06
Revision: 2


I've found that tcsh fails on rlogin or telnet if the TERM env
variable provided by those protocols is unknown on the system.  Tcsh
fails after having completed all of .cshrc and .login.  It appears to
die as soon as it tries to display the prompt.  Strace makes it seems
like the problem is with reading "/etc/termcap", possibly a type
of buffer overflow.

My prompt:  %B%m:%h - %~%#%b    (look like: "bcarsd26:75 - ~/bin>")

Below is some strace output that I thought might be relavent.  The terminal
type supplied is "vs100" (the xterm entry on Solaris 2.3).


[...]
open("/home/bcwhite/.cshdirs", O_RDONLY) = -1 ENOENT (No such file or directory)
sigprocmask(SIG_BLOCK, [WINCH], [INT])  = 0
brk(0x8079800)                          = 0x8079800
brk(0x807a000)                          = 0x807a000
open("/home/bcwhite/.terminfo/v/vs100", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/home/bcwhite/.terminfo/v", R_OK) = 0
open("/etc/terminfo/v/vs100", O_RDONLY) = -1 ENOENT (No such file or directory)
access("/etc/terminfo/v", R_OK)         = 0
access("/etc/termcap", R_OK)            = 0
open("/etc/termcap", O_RDONLY)          = 0
fstat(0, {st_mode=S_IFREG|0644, st_size=186499, ...}) = 0
lseek(0, 0, SEEK_CUR)                   = 0
read(0, "# /etc/termcap: terminal capabil"..., 4096) = 4096
brk(0x807a000)                          = 0x807a000
brk(0x807a800)                          = 0x807a800
brk(0x807a800)                          = 0x807a800
brk(0x807b000)                          = 0x807b000
brk(0x807b000)                          = 0x807b000
brk(0x807b800)                          = 0x807b800
brk(0x807b800)                          = 0x807b800
brk(0x807c000)                          = 0x807c000
brk(0x807c000)                          = 0x807c000
brk(0x807c800)                          = 0x807c800
brk(0x807c800)                          = 0x807c800
brk(0x807d000)                          = 0x807d000
brk(0x807d000)                          = 0x807d000
brk(0x807d800)                          = 0x807d800
brk(0x807d800)                          = 0x807d800
brk(0x807e000)                          = 0x807e000
read(0, "\\E[A:kd=\\E[B:kr=\\E[C:kl=\\E[D"..., 4096) = 4096
brk(0x807e000)                          = 0x807e000
brk(0x807e800)                          = 0x807e800
brk(0x807e800)                          = 0x807e800
brk(0x807f000)                          = 0x807f000
brk(0x807f000)                          = 0x807f000
brk(0x807f800)                          = 0x807f800
brk(0x807f800)                          = 0x807f800
brk(0x8080000)                          = 0x8080000
brk(0x8080000)                          = 0x8080000
brk(0x8080800)                          = 0x8080800
brk(0x8080800)                          = 0x8080800
brk(0x8081000)                          = 0x8081000
brk(0x8081000)                          = 0x8081000
brk(0x8081800)                          = 0x8081800
brk(0x8081800)                          = 0x8081800
brk(0x8082000)                          = 0x8082000
brk(0x8082000)                          = 0x8082000
brk(0x8082800)                          = 0x8082800
brk(0x8082800)                          = 0x8082800
brk(0x8083000)                          = 0x8083000
brk(0x8083000)                          = 0x8083000
brk(0x8083800)                          = 0x8083800
brk(0x8083800)                          = 0x8083800
brk(0x8084000)                          = 0x8084000
read(0, "r:\n\n# Supported by:\n# Everex\n"..., 4096) = 4096
brk(0x8084000)                          = 0x8084000
brk(0x8084800)                          = 0x8084800
brk(0x8084800)                          = 0x8084800
brk(0x8085000)                          = 0x8085000
brk(0x8085000)                          = 0x8085000
brk(0x8085800)                          = 0x8085800
brk(0x8085800)                          = 0x8085800
brk(0x8086000)                          = 0x8086000
brk(0x8086000)                          = 0x8086000
brk(0x8086800)                          = 0x8086800
brk(0x8086800)                          = 0x8086800
brk(0x8087000)                          = 0x8087000
brk(0x8087000)                          = 0x8087000
brk(0x8087800)                          = 0x8087800
brk(0x8087800)                          = 0x8087800
brk(0x8088000)                          = 0x8088000
brk(0x8088000)                          = 0x8088000
brk(0x8088800)                          = 0x8088800
brk(0x8088800)                          = 0x8088800
brk(0x8089000)                          = 0x8089000
brk(0x8089000)                          = 0x8089000
brk(0x8089800)                          = 0x8089800
read(0, ":\\\n\t:ho=\\E[H:\\\n\t:im=\\E[4"..., 4096) = 4096
brk(0x8089800)                          = 0x8089800
brk(0x808a000)                          = 0x808a000
brk(0x808a000)                          = 0x808a000
brk(0x808a800)                          = 0x808a800
brk(0x808a800)                          = 0x808a800
brk(0x808b000)                          = 0x808b000
read(0, " consistency in typing.\n#\n# Th"..., 4096) = 4096
brk(0x808b000)                          = 0x808b000
brk(0x808b800)                          = 0x808b800
brk(0x808b800)                          = 0x808b800
brk(0x808c000)                          = 0x808c000
brk(0x808c000)                          = 0x808c000
brk(0x808c800)                          = 0x808c800
brk(0x808c800)                          = 0x808c800
brk(0x808d000)                          = 0x808d000
brk(0x808d000)                          = 0x808d000
brk(0x808d800)                          = 0x808d800
read(0, " because it doesn\'t turn off th"..., 4096) = 4096
brk(0x808d800)                          = 0x808d800
brk(0x808e000)                          = 0x808e000
brk(0x808e000)                          = 0x808e000
brk(0x808e800)                          = 0x808e800
brk(0x808e800)                          = 0x808e800
brk(0x808f000)                          = 0x808f000
brk(0x808f000)                          = 0x808f000
brk(0x808f800)                          = 0x808f800
brk(0x808f800)                          = 0x808f800
brk(0x8090000)                          = 0x8090000
brk(0x8090000)                          = 0x8090000
brk(0x8090800)                          = 0x8090800
brk(0x8090800)                          = 0x8090800
brk(0x8091000)                          = 0x8091000
brk(0x8091000)                          = 0x8091000
brk(0x8091800)                          = 0x8091800
brk(0x8091800)                          = 0x8091800
brk(0x8092000)                          = 0x8092000
brk(0x8092000)                          = 0x8092000
brk(0x8092800)                          = 0x8092800
brk(0x8092800)                          = 0x8092800
brk(0x8093000)                          = 0x8093000
brk(0x8093000)                          = 0x8093000
brk(0x8093800)                          = 0x8093800
read(0, "=\\E[2J:kh=\\E[H:ku=\\E[A:kd=\\E"..., 4096) = 4096
brk(0x8093800)                          = 0x8093800
brk(0x8094000)                          = 0x8094000
brk(0x8094000)                          = 0x8094000
brk(0x8094800)                          = 0x8094800
brk(0x8094800)                          = 0x8094800
brk(0x8095000)                          = 0x8095000
brk(0x8095000)                          = 0x8095000
brk(0x8095800)                          = 0x8095800
brk(0x8095800)                          = 0x8095800
brk(0x8096000)                          = 0x8096000
brk(0x8096000)                          = 0x8096000
brk(0x8096800)                          = 0x8096800
brk(0x8096800)                          = 0x8096800
brk(0x8097000)                          = 0x8097000
brk(0x8097000)                          = 0x8097000
brk(0x8097800)                          = 0x8097800
brk(0x8097800)                          = 0x8097800
brk(0x8098000)                          = 0x8098000
brk(0x8098000)                          = 0x8098000
brk(0x8098800)                          = 0x8098800
brk(0x8098800)                          = 0x8098800
brk(0x8099000)                          = 0x8099000
brk(0x8099000)                          = 0x8099000
brk(0x8099800)                          = 0x8099800
brk(0x8099800)                          = 0x8099800
brk(0x809a000)                          = 0x809a000
read(0, "c:\\\n\t:do=^J:li#24:co#80:cl=^Y"..., 4096) = 4096
brk(0x809a000)                          = 0x809a000
brk(0x809a800)                          = 0x809a800
brk(0x809a800)                          = 0x809a800
brk(0x809b000)                          = 0x809b000
brk(0x809b000)                          = 0x809b000
brk(0x809b800)                          = 0x809b800
brk(0x809b800)                          = 0x809b800
brk(0x809c000)                          = 0x809c000
brk(0x809c000)                          = 0x809c000
brk(0x809c800)                          = 0x809c800
brk(0x809c800)                          = 0x809c800
brk(0x809d000)                          = 0x809d000
brk(0x809d000)                          = 0x809d000
brk(0x809d800)                          = 0x809d800
brk(0x809d800)                          = 0x809d800
brk(0x809e000)                          = 0x809e000
brk(0x809e000)                          = 0x809e000
brk(0x809e800)                          = 0x809e800
brk(0x809e800)                          = 0x809e800
brk(0x809f000)                          = 0x809f000
brk(0x809f000)                          = 0x809f000
brk(0x809f800)                          = 0x809f800
brk(0x809f800)                          = 0x809f800
brk(0x80a0000)                          = 0x80a0000
brk(0x80a0000)                          = 0x80a0000
brk(0x80a0800)                          = 0x80a0800
brk(0x80a0800)                          = 0x80a0800
brk(0x80a1000)                          = 0x80a1000
brk(0x80a1000)                          = 0x80a1000
brk(0x80a1800)                          = 0x80a1800
brk(0x80a1800)                          = 0x80a1800
brk(0x80a2000)                          = 0x80a
Connection closed.

                                        Brian
                                 ( bcwhite@bnr.ca )

-------------------------------------------------------------------------------
    In theory, theory and practice are the same.  In practice, they're not.


Reply to: